gpt4 book ai didi

javascript - promise 不按顺序执行javascript

转载 作者:行者123 更新时间:2023-11-30 09:36:25 26 4
gpt4 key购买 nike

我在下面使用 promises 执行了一段代码。我遇到的问题是 promise 没有按顺序执行,而是在继续执行下一个 block 之前等待第一个 block 执行

下面是代码:

array[]

new Promise(function(resolve, reject) {
//userarray is some array with user id's
userarray.forEach(function(entry) {

User.findOne({ user_id: entry}, function(err, user) {
if (err) throw err;
console.log(user.name);
array.push(user.name);
});
});
resolve("success");
})
.then(function() {
console.log(array);
console.log("done");
});

下面是输出

[] //array is still empty

done

tom

dick

harry

当我想要的是

tom

dick

harry

["tom", "dick", "harry"]

done

最佳答案

似乎 User.findOne 将异步调用其回调,以便在实际调用回调之前解决您的 promise 。你可以尝试这样的事情:

var promises = userarray.map(function(entry) {
return new Promise(function(resolve, reject) {
User.findOne({ user_id: entry}, function(err, user) {
if (err) reject(err);
console.log(user.name);
resolve(user.name);
});
});
});

Promise.all(promises).then(function(array) {
console.log(array);
console.log("done");
});

关于javascript - promise 不按顺序执行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43310659/

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