gpt4 book ai didi

javascript - 如何让 Promise 摆脱长链?

转载 作者:行者123 更新时间:2023-11-30 08:44:14 26 4
gpt4 key购买 nike

我想分离我的代码逻辑。并且长链有点难以被条件控制。

我写了一段测试代码:

var Q, f, p;

Q = require('q');

f = function(t, info) {
var deferred = Q.defer();
setTimeout(function() {
console.log(info);
return deferred.resolve();
}, t);
return deferred.promise;
};

p = f(500, 0);

p.then(function() {
return f(300, 1);
});

p.then(function() {
return f(100, 2);
});

我希望结果是:

0
1
2

但我总是得到:

0
2
1

我做错了什么吗?

最佳答案

您必须链接 then 以便在返回的 promise 上调用 then :

p = f(500, 0);
p.then(function() {
return f(300, 1);
}).then(function() {
return f(100, 2);
});

传递 promise 没有问题,这就是您已经在做的事情(f 返回一个 promise )。

关于javascript - 如何让 Promise 摆脱长链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23337747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com