Javascript worklight在循环错误中调用过程

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

我试图在将有关行的信息插入数据库后删除表中的一行,然后将其删除

但问题是该行不会被删除,因为WL invoke过程似乎在后台进程中运行,因此循环会一直运行,直到到达末尾,然后才能完成该过程。是否有任何方法使循环可以先等待调用过程完成,然后继续循环

这是我的密码

 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值始终位于循环的末尾