gpt4 book ai didi

javascript - 从第三个函数的异步第一个函数获取结果的更好方法是什么?

转载 作者:行者123 更新时间:2023-12-03 06:56:15 25 4
gpt4 key购买 nike

虽然我现在可以将函数外部的变量设置为微型站点,或者将第二个函数的回调更改为 function(err, result) { cb(cb, result, microsite)}我想知道比上面建议的更好的选择。这是我的代码:

var funcs = [
function(cb){
Microsite.findOne({_id: id1}, cb);
},
function(microsite, cb){
VideoAccount.findOne({_id: id2}, cb);
},
function(videoAccount, cb) {
execute(microsite, videoAccount, cb);
});

async.waterfall(funcs, function(err, result){...});

最佳答案

您可以使用auto功能:

async.auto({

microSite: function(cb) {
Microsite.findOne({_id: id1}, cb);
},

videoAccount: function(cb) {
VideoAccount.findOne({_id: id2}, cb);
},

thirdFunction: ["microSite", "videoAccount", function(results, cb) {
execute(results.microSite, results.videoAccount, cb);
}]

}, function(error, result) {...});

其中最终结果是以下形式的对象:

result = {
microSite,
videoAccount,
thirdFunction
}

注意:第三个​​函数中的参数取决于您的版本:

1.x 是函数(cb,结果)

2.x 是函数(结果,cb)

就我个人而言,我在任何地方都使用自动来代替并行、 waterfall 和串行。如果您的代码根据当前需求发生变化,将来可以更轻松地进行重构。

关于javascript - 从第三个函数的异步第一个函数获取结果的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260428/

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