如何使Cordova同步

时间:2014-06-05 15:20:26

标签: javascript android cordova synchronous

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

1 个答案:

答案 0 :(得分:2)

exec方法通过MesageQueue向OS发送消息,并且通常在不同的线程中执行和操作(它不在UI线程上运行)。当本机调用完成时,将消息发送到JS层并调用successCallaback。如果出现错误,则会发送另一条消息并触发errorCallaback。如果你是插件的创建者,你可以调用runOnUIThread(新的Runnable(){....})方法(至少在Android中)来在UI线程上执行某些操作,但是不建议这样做,因为阻止了UI 。

如果你不喜欢回调导致“回调地狱”的想法。您可以将回调包装在promises中。所以你可以这样做 。cordova.wrappedExec(),然后(successCallback)。然后(doSomethingElse); 看看https://github.com/stackp/promisejs