嗨,我正在使用for循环和异步ajax调用为本地存储创建批处理更新。
我的问题是,即使我的ajax调用仍未成功完成,我的循环仍会继续。
在继续循环之前,我们如何设法使循环等待单元响应ajax响应?
任何帮助表示赞赏。谢谢!!!
下面是我的示例代码:
var counter =0;
var totalRow = 3000;
for (var i = 0, l = totalRow; counter <= l; i++) {
var defectssurl = 'https://test.com/mywcf.svc/GetListAllPaging?id=' + counter;
Ext.Ajax.request({
url: defectssurl,
method: "POST",
params: '',
success: function (resp) {
console.log("load first 500 records");
var data = Ext.JSON.decode(resp.responseText); //encode Json List
if (counter == 0) {
defectsLocalStore.getProxy().clear();
// Also remove all existing records from store before adding
defectsLocalStore.removeAll();
}
Ext.Array.each(data, function (record) {
counter = counter + 1;
defectsLocalStore.add(record);
});
defectsLocalStore.sync(); // The magic! This command persists the records in the store to the browsers localStorage
//records is now same as the total records
if (counter >= totalRow) {
pCallback();
}
//continue loop
},
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
failure: function (resp) {
}
});
}
请不要使用“ for循环”。而是在成功回调中增加计数器并重新触发自身。像下面这样。
function mySyncFunction (counter, totRecords){
if(counter === undefined)
counter = 0;
if(counter >=totRecords) return;
var defectssurl = 'https://test.com/mywcf.svc/GetListAllPaging?id=' + counter;
Ext.Ajax.request({
url:defectssurl,
// snip // your code here
success: function (resp) {
// snip // your code here
counter++;
mySyncFunction(counter, totRecords);
}
// snip // your code here
});
您好,我正在使用for循环和异步ajax调用为本地存储创建批处理更新。 我的问题是,即使我的ajax调用还没有成功完成,我的循环仍在继续。 在继续循环之前,我们如何使for循环等待单元成为ajax响应的响应? 任何帮助都很感激。谢谢!!! 下面是我的示例代码:
问题内容: 我有一个使用一些异步功能的节点应用程序。 在继续进行其余的应用程序流程之前,我该如何等待异步功能完成? 下面有一个简单的示例。 在示例中,要返回的元素“ ”必须为5而不是1。如果应用程序不等待异步功能,则等于1。 谢谢 问题答案: 使用回调机制: 使用异步等待
问题内容: 据我了解,在ES7 /ES2016中,将多个in放在代码中的工作方式类似于带有promise的链接,这意味着它们将一个接一个地执行而不是并行执行。因此,例如,我们有以下代码: 我是否正确理解仅在完成时才会调用?并行调用它们的最优雅方式是什么? 我想在Node中使用它,所以也许有一个异步库解决方案? 编辑:我对这个问题提供的解决方案不满意:减速是由于异步生成器中非并行等待Promise的
本文向大家介绍JavaScript 异步等待循环,包括了JavaScript 异步等待循环的使用技巧和注意事项,需要的朋友参考一下 示例 在循环中使用异步等待时,您可能会遇到其中一些问题。 如果您只是尝试在内部使用await forEach,则会抛出Unexpected token错误。 这是因为您错误地将箭头功能视为一个块。该await会在回调函数,这是不是上下文async。 解释器可以防止我们
问题内容: 为什么每当我将ajax放入for循环中时,它都无法很好地同步? 例如,我的代码是: 为什么它先调用Ajax查询?是否有可能让ajax查询在继续之前完成?因为它在完成填充之前就清除了数组。:/ 问题答案: 首先,您确实需要了解Ajax调用是如何异步的(这就是Ajax中的“ A”所代表的意思)。这意味着调用仅启动ajax调用(它将请求发送到服务器),其余代码愉快地继续运行。有时,在其余代码
我正在尝试做一个简单的应用程序,加载数据并对其执行一个操作.所以我的想法是做这个异步。 我有3个数据源,我想异步加载它们。例如data1.xml、data2.xml和data3.xml所有文件加载起来都相当大,所以需要一些时间(这就是为什么我想要异步的原因)。 例如,我创建了一个包含3个文本框的窗口,这些文本框都绑定到一个特定的属性(Text1、Text2、Text3)和一个按钮。当我点击按钮时,