我想启动一个promises列表并在完成所有操作后执行回调(没有async / await)。
答案 0 :(得分:4)
我刚想通了。只需使用Promise.all:
function x(timeout) {
return new Promise((resolve, reject) => {
setTimeout(function() {
resolve(timeout + ' done!');
}, timeout);
});
}
(function() {
Promise.all([
x(300),
x(200),
x(100),
]).then(([x300, x200, x100]) => {
console.log(x100);
console.log(x200);
console.log(x300);
});
})();
答案 1 :(得分:0)
是的,Promise.all是你的朋友。
const mongo = require('mongodb').MongoClient;
const uri = "mongodb://localhost:27017";
mongo.connect(uri, function (err, db) {
const dbo = db.db("readings");
if (err) {
throw err;
};
console.log('MongoDB connected...')
function insertReading (data) {
dbo.collection("myReadings").insertOne(data, function(err, res) {
if (err) throw err;
console.log("1 document inserted");
});
};
});
exports.newReading = function(req, res) {
insertReading(req.body)
};
exports.myDashboard = function (req, res) {
console.log("test");
}
你没有使用async / await的任何原因我发现它真的简化了这种模式吗?
Promise.all([promise1, promise2]).then(([result1, result2]) => {})
https://www.dalejefferson.com/blog/async-await-promise-all-array-destructuring/