我创建了一个简单的 Promise 链示例。我的目标是触发以下 4 个函数以按顺序获得输出。即 1 2 3 4。
function WriteOne()
{
return new Promise(function(resolve, reject)
{
console.log("1");
resolve("true");
})
}
function WriteTwo()
{
return new Promise(function(resolve, reject)
{
setTimeout(function(){console.log("2");}, 3000);
resolve("true");
})
}
function WriteThree()
{
return new Promise(function(resolve, reject)
{
setTimeout(function(){console.log("3");}, 1000);
resolve("true");
})
}
function WriteFour()
{
return new Promise(function(resolve, reject)
{
console.log("4");
resolve("true");
})
}
WriteOne().then(WriteTwo).then(WriteThree).then(WriteFour);
当我执行它们时,它们按以下顺序触发:
1 4 3 2
我在这里做错了什么?
最佳答案
您需要在setTimeout
回调中解决
function WriteOne() {
return new Promise(function (resolve, reject) {
console.log("1");
resolve("true");
});
}
function WriteTwo() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log("2");
resolve("true");
}, 3000);
});
}
function WriteThree() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log("3");
resolve("true");
}, 1000);
});
}
function WriteFour() {
return new Promise(function (resolve, reject) {
console.log("4");
resolve("true");
});
}
WriteOne().then(WriteTwo).then(WriteThree).then(WriteFour);
关于javascript - Node.js Promise 链未按所需顺序触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54125911/