前端:underscore.js或通过browserify的async.js?

所以如果你是一个后端的node.js开发者,你会知道这个称为asynchronous的真棒库。

如果您是前端开发人员,您将知道称为下划线的真棒库。


现在的事情是,这些库都倾向于在一定程度上提供相似的function。

所以问题是,使用browserify在前端使用async是否有意义?

Underscore是一个实用程序库,提供一些有用的function,如eachmapreduce 。 但是,所有这些同步工作。 例如

 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似乎过分。