首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从第三个函数的异步第一个函数中得到结果的更好方法是什么?

从第三个函数的异步第一个函数中得到结果的更好方法是什么?
EN

Stack Overflow用户
提问于 2016-05-16 18:09:14
回答 1查看 65关注 0票数 0

尽管我现在可以获得一个变量,外部函数是microsite,或者将第二个函数的回调更改为function(err, result) { cb(cb, result, microsite)},但我想知道一个比上面建议的更好的选项。这是我的代码:

代码语言:javascript
复制
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){...});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-16 19:49:54

您可以使用自动函数:

代码语言:javascript
复制
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是表单的一个对象:

代码语言:javascript
复制
result = {
    microSite, 
    videoAccount, 
    thirdFunction
}

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

1.x是function(cb, results)

2.x是function(results, cb)

就我个人而言,我用自动随时随地代替平行,瀑布,和系列。如果您的代码曾经更改到当前的需求,那么将来重构就更容易了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37260428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档