标签:function 处理 back data optional 就会 特性 并行执行 开始
var fs = require(‘fs‘);
// 要处理的文件列表
var files = [‘file1‘, ‘file2‘, ‘file3‘];
function parseFile () {
if (files.length == 0) {
return;
}
var file = files.shift();
fs.readFile(file, function (err, data) {
// 这里处理文件数据
parseFile(); // 处理完毕后,通过递归调用处理下一个文件
});
}
// 开始处理
parseFile();
关于async总结:
1.series(tasks, [callback]) 顺序执行数组、集合内的函数,当前面一个函数执行完成就会立即执行下一个函数,如果函数触发了错误,可以在callback函数中验证,否则会一直执行完成tasks
async.series({
one: function(callback) {
setTimeout(function() {
callback(null, 1);
},
200);
},
two: function(callback) {
setTimeout(function() {
callback(null, 2);
},
100);
}
},
function(err, results) {
// results is now equal to: {one: 1, two: 2}
});
2.parallel(tasks, [callback]) 并行执行数组、集合内的方法,不用等到前一个函数执行完再执行下一个函数,如果函数触发了错误,可以在callback函数中验证
async.parallel(
[
function(callback) {
setTimeout(function() {
callback(null, ‘one‘);
},
200);
},
function(callback) {
setTimeout(function() {
callback(null, ‘two‘);
},
100);
}
],
// optional callback
function(err, results) {
// the results array will equal [‘one‘,‘two‘] even thoug
// the second function had a shorter
timeout
}
);
3.waterfall(tasks, [callback]) tasks依次运行,前一个函数的回调会作为后一个函数的参数,如果有任何任务通过一个错误的回调,下一个函数不执行
async.waterfall([
function(callback){
callback(null, ‘one‘, ‘two‘);
},
function(arg1, arg2, callback){
// arg1 now equals ‘one‘ and arg2 nowequals ‘two‘
callback(null, ‘three‘);
},
function(arg1, callback){
// arg1 now equals ‘three‘
callback(null, ‘done‘);
}
], function (err, result) {
// result now equals ‘done‘
});
标签:function 处理 back data optional 就会 特性 并行执行 开始
原文地址:http://www.cnblogs.com/SunShineKG/p/7354943.html