Javascript worklight在循环错误中调用过程
我试图在将有关行的信息插入数据库后删除表中的一行,然后将其删除 但问题是该行不会被删除,因为WL invoke过程似乎在后台进程中运行,因此循环会一直运行,直到到达末尾,然后才能完成该过程。是否有任何方法使循环可以先等待调用过程完成,然后继续循环 这是我的密码Javascript worklight在循环错误中调用过程,javascript,ibm-mobilefirst,worklight-adapters,Javascript,Ibm Mobilefirst,Worklight Adapters,我试图在将有关行的信息插入数据库后删除表中的一行,然后将其删除 但问题是该行不会被删除,因为WL invoke过程似乎在后台进程中运行,因此循环会一直运行,直到到达末尾,然后才能完成该过程。是否有任何方法使循环可以先等待调用过程完成,然后继续循环 这是我的密码 var table = document.getElementById('table_cart'); for (var r = 1, n = table.rows.length; r < n; r++) { var b
var table = document.getElementById('table_cart');
for (var r = 1, n = table.rows.length; r < n; r++) {
var barcode = table.rows[r].cells[0].innerHTML;
var name = table.rows[r].cells[1].innerHTML;
var total = table.rows[r].cells[2].innerHTML;
var price = table.rows[r].cells[3].innerHTML;
var invocationData = {
adapter: 'ProductAdapter',
procedure: 'add',
parameters: [barcode, total, price] //nama produk,jmlh
};
WL.Client.invokeProcedure(invocationData, {
onSuccess: function (response) {
alert(total + " " + name + " order success");
//table.rows[r].innerHTML = "";
//table.removeChild(table.rows[r]);
//table.deleteRow(r);//blm bisa apus cartnya
alert(r);
document.getElementById('table_cart').deleteRow(r);
},
onFailure: function (response) {
alert("error connecting to server");
}
});
}
var table=document.getElementById('table_cart');
for(var r=1,n=table.rows.length;r
在Worklight中,所有过程调用都是异步的-因此,当一个接一个地编写两个过程调用时,您无法知道最后一个调用是否完成。
如果要确保下一个过程调用仅在第一个过程调用完成后发生,则应将第二个过程调用放入第一个调用的onSuccess回调方法中。实际上,我认为您要做的是在将该行添加到数据库后从HTML中删除该行,因此,我认为您应该做的只是在适配器请求成功时前进到下一行(r++)。您可以从HTML中删除该行,然后再前进到下一行。我尝试在onSuccess中删除该行,但它不会删除,因为它是异步的。调用过程完成时,循环已经完成,因此r值始终位于循环的末尾