【发布时间】:2014-09-03 18:04:18
【问题描述】:
我在 Google 搜索 jQuery Deferred and Promise for sequential execution of synchronous and asynchronous funcitons 时发现了这个脚本。
这可以解决我按顺序执行脚本的问题。但是 then() 函数的问题是我无法知道我可以调用这个函数多少次。我可以调用函数 a() 3 次,下一次,我可以调用它 20 次,等等。所以,那不适用于 then()。 then() 函数不允许数组堆栈。那么,你们是如何让这个概念发挥作用的呢?
fucntion a(counter)
{
$deferred = $.Deferred();
//Run some scripts here...
alert(counter);
$deferred.resolve();
return $deferred;
}
function Test()
{
var d = $.Deferred(),
p=d.promise();
p.then(a(0)).then(a(1)).then(a(2));
d.resolve();
return d;
}
Test().done(function(){ alert('done'); }).fail(function() { alert('fail'); });
【问题讨论】:
-
您将
a(N)返回的$deferred传递给.then()。相反,您需要传递一个回调函数,例如.then(a). -
我不知道您提到多次致电
Test()是什么意思?这有什么问题,当你做你没想到的事情时会发生什么? “允许数组堆栈”是什么意思? -
我更新了问题,我的意思是a(),而不是Test()...
-
是的,你正在同时调用
a(0); a(1); a(2);,这使得异步进程同时运行。 -
那么问题是什么?你想“创造”什么概念?
标签: javascript jquery jquery-deferred