gpt4 book ai didi

javascript - Nodejs 没有异步执行 promise 函数

转载 作者:行者123 更新时间:2023-11-30 07:57:54 25 4
gpt4 key购买 nike

我写了一个小示例 js 来学习如何使用 Promises。我希望脚本启动并立即输出“开始”,几秒钟后输出“45”。但是 insead,脚本开始时没有任何输出,并且在退出之前,两行都被打印出来了。我是否误解了 Promises 的工作原理或者是否存在缓冲问题?

;(function(main, undefined) {
"use strict";

main.test = function() {
return new Promise(function(resolve, reject) {
for(var i = 0; i < 999999999; ++i);
resolve(45);
});
};

})(global);

global.test().then(function(r) {
console.log(r);
});


console.log("start");

$ Node -vv0.12.6

最佳答案

在 promise 中包装代码不会使其异步执行。它使使用异步代码更容易。

在您的示例中,您的循环是同步执行的。这是您使用 setTimeout 的示例,它异步执行,而不是 for 循环。

;(function(main, undefined) {
"use strict";

main.test = function() {
return new Promise(function(resolve, reject) {
setTimeout(function() { resolve(45); }, 5000)
console.log(44);
});
};

})(global);

global.test().then(function(r) {
console.log(r);
});


console.log("start");

在这个例子中,输出将是:

start
44
45

关于javascript - Nodejs 没有异步执行 promise 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526854/

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