编程语言
首页 > 编程语言> > javascript – 如何使Cordova同步

javascript – 如何使Cordova同步

作者:互联网

我的问题很简单但我在网上找不到任何东西.我正在完成手机应用程序的开发,由于非同步执行,我在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

标签:javascript,android,synchronous,cordova
来源: https://codeday.me/bug/20190703/1364404.html