我从来没有使用过jQuery $ .Deferred,到目前为止,我还没有找到一个例子可以帮助我。
我需要的是能够依次执行3个单独的任务,即步骤1,步骤2和步骤3。步骤2应该等待步骤1完成,步骤3应该等待步骤2完成之后再执行。
我正在尝试以下操作,但似乎无所适从:
var construct = new $.Deferred();
construct.done(function() {
console.log('Step 1');
});
construct.done(function() {
setTimeout(5000);
console.log('Step 2');
});
construct.done(function() {
console.log('Step 3');
});
construct.resolve();
有人在摆弄简单的东西吗?
最佳答案
为了像这样链接Deferred
,您必须使用then
,并返回一个新的Deferred
:
var construct = $.Deferred();
construct.then(function() {
console.log('Step 1');
})
.then(function() {
return $.Deferred(function (dfd) {
setTimeout(function () {
console.log('Step 2');
dfd.resolve();
}, 5000);
});
})
.then(function() {
console.log('Step 3');
});
construct.resolve();
这是小提琴:http://jsfiddle.net/fMMsz/