在node.js中使用asynchronous模块

我知道这个asynchronous模块 ,每个人都在谈论它。 正如我所知下面的代码将触发2分贝调用完成时的callback。

async.parallel([ function(){ dbcall() }, function(){ dbcall() } ], callback); 

但是使用asynchronous模块是必须的吗? 如果我正确包装我的代码,它也可以是asynchronous的。 就像我在控制器中写的一样

 var Token = require('../models/token'); Token.getAllTokens(owner, function(err,callback){ var device_tokens = callback.token; GCM_call(device_tokens); //another ajax call }); 

上面的代码将工作,我testing了它,GCM_call将等待getAllTokens后运行。 那么为什么要使用asynchronous模块? 只是为了使代码更易读?

那么为什么要使用asynchronous模块? 只是为了使代码更易读?

在某种程度上,是的,使它更可读。 它提供了一些有用的工具来编写更具可读性和更高性能的代码。

但最重要的是,因为它解决了使用asynchronousfunction时的一些常见问题。 您正在展示一个使用单个callback的示例,第一个代码块中的asynchronous模块示例首先等待某些asynchronous事件完成,然后调用callback函数。 你怎么用香草js解决这个问题? 如果你知道Promise API,你可以说Promise.all([promise1, promise2, ...]) 。 但是当你想要使用像async.series这样的应用async.series ,只需要一次执行一个任务呢? 在这种情况下,您经常会看到黑客入侵的解决scheme,这个解决scheme被称为callback地狱callback hell) ,其中的callback函数被embedded到另一个中。

因此,您可以使用Promise API创build香草代码解决scheme,甚至可以使用未来ECMAScript规范中的async / await来添加更简单的方法,但是每次出现上述问题时,都可以省去重复此问题的麻烦。