前端:通过browserify下划线.js或async.js?

tUr*_*G0n 6 javascript node.js underscore.js

所以如果你是一个后端node.js开发者,你就会知道名为async的很棒的lib .

如果你是一个前端开发人员,你就会知道名为下划线的强大的lib .


现在的问题是,这两个库都倾向于在某种程度上提供类似的功能.

所以现在的问题是,是否有意义使用使用异步在前端browserify

小智 16

Underscore是一个实用程序库,提供像一些有用的功能each,mapreduce.但是,所有这些都是同步的.例如

var results = _.map([1,2,3], function(value, index, list) {
  return value * 2;
});

console.log(results);
Run Code Online (Sandbox Code Playgroud)

输出:[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);
        }
);
Run Code Online (Sandbox Code Playgroud)

输出:[2,4,6]

如果您注意到,它不会将映射的数组作为返回值返回,而是将映射的数组传递给回调函数,并console.log(results)用于在回调内部打印结果.

这种编程风格的一个副作用是iterator函数并行调用,而不是按顺序调用,从而在迭代器函数使用任何I/O时实现更大的可伸缩性.

因此,即使async库提供的某些功能类似于提供的功能Underscore,它们也用于不同目的,如上所述.现在,决定使用哪些取决于您的应用程序需求和编程风格.