今天遇到个很奇怪的问题,做一个Hybrid App,用的是Cordova,测试机是ipad,本人负责H5部分(因为不会Object-C orz),所以也看不到原生部分的代码。
问题出现在我重复调用一个原生的异步方法,下面直接贴图↓
下面是重复调用的测试代码
结果打印出来的是这样滴↓
"
进来了
出去了
进来了
出去了
第二次成功
"
???我当时就懵逼了,第一次回调哪去了???
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你为什么要连续调用2次?
Cordova.exec方法执行后,你就等着回调函数的执行,整个过程是异步的~~
异步函数的回调执行要在当前代码块执行完毕后才有可能被执行~~
连续调用2次,后一次的回调函数会覆盖前一次的看了下exec函数调用逻辑,js会保证每次callback不同,即使同样的方法参数调用:)
而本地java代码调用后回把callbackId传回给JS
JS根据callback再调用相应回调函数
可能是第1次调用本地java代码时候执行出错或超时等原因,而没有返回JS中调用回调函数。而第2次调用时java代码执行成功了,JS回调就被执行....
具体原因要去看插件执行时是否有错误
cordova.js代码片段
exec.js exec代码片段