我的问题很简单但我在网上找不到任何东西.我正在完成手机应用程序的开发,由于非同步执行,我在Cordova遇到了一些问题.就像现在一样,我必须做这样的事情:
var finishedFl = 0;
cordova.exec(
function(info) {
.... [Function goes here]
finishedFl = 1;
},
function (info) {
alert('Error');
},
'Smapps', 'getInfo', []);
While(finishedFl != 1){
wait;
}
anotherFunction();
我觉得这种编程方式非常令人不安,显然不是那么好.所以问题是:有没有办法使Cordova执行同步?
解决方法:
exec方法通过MesageQueue向OS发送消息,并且通常在不同的线程中执行和操作(它不在UI线程上运行).当本机调用完成时,将消息发送到JS层并调用successCallaback.如果出现错误,则会发送另一条消息并触发errorCallaback.如果你是插件的创建者,你可以调用runOnUIThread(新的Runnable(){….})方法(至少在Android中)来在UI线程上执行某些操作,但是不建议这样做,因为阻止了UI .
如果你不喜欢回调导致“回调地狱”的想法.您可以将回调包装在promises中.所以你可以这样做
.cordova.wrappedExec(),然后(successCallback).然后(doSomethingElse);
看看这里https://github.com/stackp/promisejs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。