使 cordova.exec 同步

Posted

技术标签:

【中文标题】使 cordova.exec 同步【英文标题】:Make cordova.exec synchronous 【发布时间】:2014-07-28 11:04:46 【问题描述】:

在使用phonegap(即cordova2.9)的android中,我正在寻找一种方法来使这个调用同步:

for(var i=0;i<5;i++)
cordova.exec(onSuccess, fail, "PluginName", "echo",["arg1","arg2"]); 

我注意到 onSuccess 函数在循环的最后被触发,即在 i 等于 5 之后

【问题讨论】:

【参考方案1】:

Cordova 是异步的。

如果使用同步调用,UI会在循环执行期间卡住。

为了实现你想要做的事情,你应该在 onSuccess 和 fail 回调中增加并测试 i 的值。

也许这样的事情会起作用(没有太多时间来测试它/真正考虑一下):

var execute=function(val,max)
    if(val<max)
        cordova.exec(function()
            onSuccess();
            execute(val+1,max);
        , function()
            fail();
            execute(val+1,max);
        ,
        "PluginName", "echo",["arg1","arg2"]); 
    

execute(0,5);

【讨论】:

以上是关于使 cordova.exec 同步的主要内容,如果未能解决你的问题,请参考以下文章

向 cordova.exec 函数添加额外的参数

cordova.exec 参数中的奇怪行为

cordova.exec 导致我的 Android 项目出现问题

Phonegap 2.1 cordova.exec 更新

Phonegap 通信原理

H5页面中如何调用cordova的插件?