NodeJS
最重要的功能之一就是我正在阅读的asynchronous
开箱即用,但作为NodeJS
它的初学者#{1}}&#39}。如果已经在本地处理这个模块,那么为什么存在像async
这样的模块会有点混乱?
https://www.npmjs.com/package/async
我认为有充分的理由,但这对我来说并不明显。是处理callback hell
还是Pyramid of Doom
。
答案 0 :(得分:8)
阅读说明:
Async是一个实用程序模块,它提供了直接,强大的功能,用于处理异步JavaScript 。
它不“提供”异步函数,它提供了使用异步javascript的函数。
注意:javascript 不都是异步的,只是异步部分是异步的。
换句话说
async不会使nodejs异步,它使得使用异步代码更容易通过其糖衣涂层的优点
答案 1 :(得分:2)
在
NodeJS
中使用异步编程时,可能会结束 当你有更多的异步函数被一个接一个地调用时,Callback Hell
或Pyramid of Doom
如下所示。
回调 - 异步执行第一个函数后,应该通知主线程。您正在为其传递函数callback
,该函数将在异步操作完成后触发。
当你在链中或在一个大循环中有更多的异步函数时,你可能必须传递相同数量的回调来找出每个操作的完成,而最后一个回调来执行其他的东西,比如返回响应等
当您使用更多回调对它们进行编码时,它变得非常难以管理/维护,并且缺乏更好的可读性,如下所示。
getData(function(a){
getMoreData(a, function(b){
getMoreData(b, function(c){
getMoreData(c, function(d){
getMoreData(d, function(e){
...
});
});
});
});
});
摆脱这些缺点并提高可读性 维护,我们可以使用其他模块,例如
async
,bluebird
你可以选择你喜欢的任何东西,这对你来说似乎更好 在理解和满足所有要求方面没有 使事情变得太复杂。
无论如何,这完全取决于callback hell
或其他模块。
要深入了解,
https://strongloop.com/strongblog/node-js-callback-hell-promises-generators/