我正在构建一个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
我尝试了很多东西。我仍然没有找到解决方案。 提前完成。
答案 0 :(得分:0)
cordova.exec调用是异步的。因此,您应该更改代码,以便在回调本身内调用连续的cordova.execs或实现类似的操作;只需等待每个exec调用完成,然后再调用下一个。