【发布时间】:2015-02-08 23:03:04
【问题描述】:
我正在尝试使用 while 或 for 循环来控制 ajax 查询。我的意图是让循环执行 4 次并用相同的查询填充 4 个值。我遇到的问题是,当然,AJAX 请求是异步的并且可能需要时间。所以我要么最终得到一个冻结的浏览器,要么是一个在分配值之前完成的循环。
var i = 0;
while (i < 4) {
doAjaxReq().done(function (result) {
if (i == 0) val1 = result;
else if (i == 1) val2 = result;
else if (i == 2) val3 = result;
else if (i == 3) val4 = result;
});
}
如果我将 i++ 放在 ajax 请求之外,它当然会在所有请求完成之前完成循环。如果我将 i++ 放在 ajax.done() 中,我会崩溃浏览器。
我能做什么?
【问题讨论】:
-
为什么不用数组来放结果?
-
我不知道会有什么不同..我仍然需要 4 个 ajax 调用。
-
你能试试递归吗?
-
你永远不会增加
i- 这会永远运行吗? -
有更好的方法给猫剥皮。您可以将上下文传递给 ajax 调用(在回调含义中给出
this(例如this=val1,或this=val2))。另外,可能想查看$.DeferredAPI。