因此,如果您是后端 node.js 开发人员,您将了解名为async的很棒的库。
如果您是前端开发人员,您会知道名为underscore的很棒的库。
现在的问题是,这两个库都倾向于在某种程度上提供相似的功能。
所以问题是,使用browserify在前端使用 async 有意义吗?
因此,如果您是后端 node.js 开发人员,您将了解名为async的很棒的库。
如果您是前端开发人员,您会知道名为underscore的很棒的库。
现在的问题是,这两个库都倾向于在某种程度上提供相似的功能。
所以问题是,使用browserify在前端使用 async 有意义吗?
Underscore
是一个实用程序库,提供了一些有用的功能each
,如map
和reduce
。但是,所有这些都是同步工作的。例如
var results = _.map([1,2,3], function(value, index, list) {
return value * 2;
});
console.log(results);
输出:[2、4、6]
如果您注意到,console.log(results)
只有在_.map()
函数完全执行并返回结果后才会调用该语句。这是您在浏览器脚本中使用的典型同步编程风格。
在服务器上,Node.js
王者在哪里,上面的同步编程对事件循环是有害的。在那里,异步编程风格是首选。看看使用该库的相同map
方法。async
async.map([1,2,3],
function mapper(item, callback) {
callback(null, item * 2);
},
function(error, results) {
console.log(results);
}
);
输出:[2、4、6]
如果您注意到,它不会将映射数组作为返回值返回,而是将映射数组传递给回调函数,并console.log(results)
用于在回调内部打印结果。
这种编程风格的一个副作用是iterator
函数被并行调用,而不是按串行顺序调用,因此如果迭代器函数使用任何 I/O,则可以实现更高的可伸缩性。
因此,尽管async
library 提供的某些功能与 提供的功能相似Underscore
,但它们的用途不同,如上所示。现在,决定使用哪些取决于您的应用程序要求和编程风格。
根据异步自述文件,它可以直接在浏览器中使用。使用browersify 似乎过分了。