鉴于这些功能:
function func1() {
var dfd = $.Deferred();
setTimeout(function() {
dfd.resolve('Password');
}, 1000);
return dfd.promise();
}
function func2(message) {
var dfd = $.Deferred();
setTimeout(function() {
if (message == 'Password') {
dfd.resolve('Hello World');
}
}, 1000);
return dfd.promise();
}
我想找到一种更好的方法来执行以下操作。注意这是使用 jQuery 1.8.x。
var promise = func1();
promise.done(function(message1) {
var promise2 = func2(message1);
promise2.done(function(message2) {
alert(message2);
});
});
有任何想法吗?我认为使用 jQuery #pipe 或 #then 会起作用,但我想不通。这是一个可以玩的 fiddle :http://jsfiddle.net/Z7prn/
最佳答案
这并不复杂(使用 .then
或 .pipe
,我认为它们自 jQuery 1.8 以来都是相同的)。
func1().then(func2).done(function(message) {
alert(message);
});
由于
func2
返回一个新的延迟对象 .done
回调被附加到那个。DEMO
关于javascript - 如何在 jQuery 1.8.x 中链接一系列延迟函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651243/