laya js bridge 发表于 2019-10-21 | 热度 ℃ | 字数统计 301 | 阅读时长 1 laya 文档用反射机制实现二次开发 注123laya 的异步调用,内部并没有实现队列。如连续多次调用同一异步方法,回调函数会被覆盖,导致逻辑混乱。即异步调用需要串行调用方案: 所有接口使用同步方式调用,指定回调方法,客户端直接回调,类似 jsonp 示例12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455const os = conchConfig.getOS();let GameClient = { is_android : os == "Conch-android", is_ios_jj : os == "Conch-ios", bridge : os == "Conch-android" ? PlatformClass.createClass("com.xxx.xxx.xxx.JSBridge") : PlatformClass.createClass("JSBridge"), data : {}, /** * toast (同步方法示例) * @param {String} msg */ alert (msg) { this.bridge.call("showMessage", msg); }, /** * 获取用户信息 (异步方法示例) * @param {Function} cb 回调 * @param {Boolean} force_update 强制取最新信息 * @example * GameClient.getUserInfo(res => { * // 已登录 * if(res.errno == 1){ * res.data = { * name : "xxx", * avatar : "xxx", * }; * } * }); */ getUserInfo (cb, force_update) { cb = cb || function(){}; // 已记录登录状态 if(this.data.userInfo && !force_update){ cb(this.data.userInfo); return; } this.bridge.callWithBack(res => { res = typeof res == "string" ? JSON.parse(res) : res; if(res.errno == 1){ this.data.userInfo = res.data; } else { this.data.userInfo = null; } cb(this.data.userInfo); }, "getCurrentUserInfo"); },};export default GameClient; -------------感谢您的阅读 有问题请留言(或mailto:frostbelt@sina.cn)-------------