javascript - Node.js Promise 链未按所需顺序触发

标签 javascript node.js promise

我创建了一个简单的 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/

相关文章:

javascript - Node.js Q promise ,可以使用 this() 为什么要使用 defer()?

javascript - 创建取消按钮...如何在 Node/Express.js 中完全中止请求

javascript - 从 jQuery AJAX 完整函数内部调用包装函数

javascript - 在 Javascript 中动态命名对象

node.js - 我们如何在express js中将json文件缓存在服务器中

javascript - NodeJS SQL 在 for 循环中返回 'Cannot read property ' x' of undefined'

javascript - Promise的链式,有没有更好的办法?

javascript - 用户登录后如何重定向?

javascript - 触发器仅在单击时起作用,但在没有它的情况下加载时不起作用

javascript - 找不到模块 '../build/Release/bson' ] 代码 : 'MODULE_NOT_FOUND' } js-bson: Failed to load c++ bson extension, 使用纯 JS 版本