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