【问题标题】:Async module in node js节点js中的异步模块
【发布时间】:2018-09-03 13:28:33
【问题描述】:

我是节点 js 的新手。我正在从 github(https://github.com/caolan/async/tree/master/lib) 上的 async 模块学习异步功能。我正在使用与parallel.js中编写的相同示例,即 var async = require('async');

async.parallel({
    one : function(callback){
        setTimeout(function(){
            callback(null,1);
        },200);
    },
    two : function(callback){
        setTimeout(function(){
            callback(null,2);
        },100);
    }
},function(err,results){
    console.log(results);
});

但没有得到文档中解释的所需输出,即 {one:1, two:2}。我不明白为什么? 谁能让我清楚地理解它背后的真正概念?

【问题讨论】:

  • 函数必须返回 Promise 才能使用异步模块
  • 感谢您的回复,但官方文档没有提到要使用的任何承诺,如果您参考此链接:github.com/caolan/async/blob/master/lib/parallel.js 第一个示例完全按照所述运行,但第二个不是。
  • 你收到了什么结果?
  • @Artur - 你错了。 async 模块根本不使用 Promise。这是一种较旧的技术,仅依赖于普通回调。更现代的方法根本不会使用 async 模块,而是使用带有 Promise.all() 的 Promise。
  • {two:2,one:1} @Fadi Abo Msalam

标签: javascript node.js async.js


【解决方案1】:
async.parallel({
one : function(callback){
    setTimeout(function(){
        callback(null,1);
    },200);
},
two : function(callback){
    setTimeout(function(){
        callback(null,2);
    },100);
  }
 },function(err,results){
console.log(results);
});

当您分别设置 200 毫秒和 100 毫秒的时间时。因此,当 100 毫秒时间结束时,它执行两个并返回 2,然后在另一个 100 毫秒后执行并返回一个 1。尝试更改值。 观看此视频(how javascript/nodejs works in browser)。

【讨论】:

  • 当然是。我也认为它应该像你说的那样工作。但官方文档又说了一次。它说在这种情况下它应该返回 {one:1,two:2} 但如何????两个的回调较早完成,应该首先显示......我已经理解了回调的概念,但文档中的输出会造成混乱。
  • 不,不是@nilakantha singh deo
  • 那么可能是文档中的拼写错误。
猜你喜欢
  • 1970-01-01
  • 2020-03-30
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多