所有cordova.exec函数结束后,都会执行成功回调

时间:2014-10-22 10:59:12

标签: javascript android cordova

我正在构建一个phonegap应用程序,我目前的原生平台是android。我有个问题。我有一个用java构建的数组列表。我必须将数组与我从javascript调用的服务进行比较。但问题是当我在for循环中调用cordova.exec时,首先执行整个for循环,然后控制转移到所有cordova.exec的callbacksuccess。

我的代码是 -

 $.ajax({
      url : ...,  
      type: "GET",
      data: null,
      setTimeout:1,
      dataType:"JSON",
      success: function(response)
      {
         var mydata='';
         for(var i=0;i<response.length;i++)
         {
           alert('inside for '+i);
            obj=response[i];
            var testpackage=obj.PackageName;
            cordova.exec(callbacks,callbacke,'MyPlugin','plugin2',[testpackage]);
         }
      },
     error: function()
     {
        alert('Failed to fetch list.Try again later.');
     }
    });
function callbacks(e)
{
alert('success');
}

在整个for循环执行后调用我的callbacks()函数。 我收到的输出是 -

inside for 0
inside for 1
inside for 2
success
success
success

我的预期输出是 -

inside for 0
success
inside for 1
success
inside for 2
success

我尝试了很多东西。我仍然没有找到解决方案。             提前完成。

1 个答案:

答案 0 :(得分:0)

cordova.exec调用是异步的。因此,您应该更改代码,以便在回调本身内调用连续的cordova.execs或实现类似的操作;只需等待每个exec调用完成,然后再调用下一个。