gpt4 book ai didi

javascript - async.series 不是串行执行操作。为什么?

转载 作者:行者123 更新时间:2023-11-28 15:23:19 28 4
gpt4 key购买 nike

据我了解,async.series 一次只做一件事情。你能帮我破译这个输出吗?

操作 mongo 数据库集合的代码:

    async.series([
countDocuments(db,function(){console.log("Step 1 complete");}),
insertDocument(db,function(){console.log("Step 2 complete");}),
countDocuments(db,function(){console.log("Step 3 complete");}),
removeDocument(db,function(){console.log("Step 4 complete");}),
countDocuments(db,function(){
})], function(){
db.close();
});

输出:

Step 1 complete
Step 3 complete
Step 2 complete
Step 4 complete

这对我来说毫无意义。当然重点是要等到 2 完成后再开始 3?

最佳答案

您必须将回调函数传递给 async.series 。目前,您只需立即直接调用所有这些函数,并将其结果传递给 async.series。此外,每个函数都会从 async 传递一个 callback 参数,您需要异步调用该参数来告诉该步骤已完成并且应该执行下一个步骤。

async.series([
function(cb) {
countDocuments(db,function(e){console.log("Step 1 complete");cb(e);});
},
function(cb) {
insertDocument(db,function(e){console.log("Step 2 complete");cb(e);}),
},
function(cb) {
countDocuments(db,function(e){console.log("Step 3 complete");cb(e);}),
},
function(cb) {
removeDocument(db,function(e){console.log("Step 4 complete");cb(e);}),
},
function(cb) {
countDocuments(db, cb); // the short version
}
], function(){
db.close();
});

关于javascript - async.series 不是串行执行操作。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30308578/

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