jquery承诺函数链接
我试图创建一系列链接在一起的函数。下面是我想要的,但我希望能够单独调用任何函数来启动序列。例如,如果我调用one(),它将运行one()、two()、three()、complete()。如果我调用three(),它将运行three然后complete()。有没有一种方法可以将每个函数“链接”到它下面的函数,而不必像调用jquery承诺函数链接,jquery,promise,deferred,Jquery,Promise,Deferred,我试图创建一系列链接在一起的函数。下面是我想要的,但我希望能够单独调用任何函数来启动序列。例如,如果我调用one(),它将运行one()、two()、three()、complete()。如果我调用three(),它将运行three然后complete()。有没有一种方法可以将每个函数“链接”到它下面的函数,而不必像调用one()。然后(两个)。然后(三个)。然后(完成)但只需一个()或两个()等 假设顺序始终相同,只需在每个顺序中添加一个then(),然后按顺序调用下一个 函数一(){ va
one()。然后(两个)。然后(三个)。然后(完成)代码>但只需一个()或两个()等
假设顺序始终相同,只需在每个顺序中添加一个then()
,然后按顺序调用下一个
函数一(){
var d=$.Deferred();
console.log('one');
设置超时(d.resolve,1000);
返回d.promise(),然后返回(两个);
}
函数二(){
var d=$.Deferred();
console.log('two');
设置超时(d.resolve,1000);
返回d.promise(),然后返回(三);
}
职能三(){
var d=$.Deferred();
console.log('three');
设置超时(d.resolve,1000);
返回d.promise()。然后(完成);
}
函数完成({
console.log('done');
}
一个();
setTimeout(()=>{console.log('Start at three');three()},5000)
如果函数是同步的,而不使用承诺,您将如何解决相同的问题?是的,这就是我要寻找的。顺序总是一样的。非常感谢。
function one() {
var d = $.Deferred();
console.log('one');
setTimeout(function() {
d.resolve();
}, 5000);
return d.promise();
}
function two() {
var d = $.Deferred();
console.log('two');
setTimeout(function() {
d.resolve();
}, 5000);
return d.promise();
}
function three() {
var d = $.Deferred();
console.log('three');
setTimeout(function() {
d.resolve();
}, 5000);
return d.promise();
}
function complete() {
console.log('done');
}
one().then(two).then(three).then(complete);