最近在写自己的app,从前到后都是自己一个人做,因为后台nodejs的一个需求要同步顺序执行,所以用到了async模块,有坑所以写下经验。
Demo如下
var path = require('path');
var fs = require('fs');
var async = require('async');
var i = 0;
var callback = function(){console.log('...');};
var array = ['1', '2', '3', '4'];
//因为callback什么实际事情都不做,所以就只传入,不调用
async.eachSeries(array, function(obj, callback){
console.log(obj);
});
console.log('****');
发现输出
xxx-MacBook-Pro:util xxx$ node test.js
1
****
xxx-MacBook-Pro:util xxx$
怎么会只做一次呢?明明就是要做4次的呀!坑在这里
callback函数必须要调用
我没有看async的代码,仅仅猜想是async模块需要根据callback来确定函数的执行情况。
不管怎么样,加入callback的调用后,程序执行正常了!
var path = require('path');
var fs = require('fs');
var async = require('async');
var i = 0;
var callback = function(){console.log('...');};
var array = ['1', '2', '3', '4'];
async.eachSeries(array, function(obj, callback){
console.log(obj);
callback();//切记callback一点要调用
});
console.log('****');
xxx-MacBook-Pro:util xxx$ node test.js
1
2
3
4
****
xxx-MacBook-Pro:util xxx$
另外的问题是callback里面‘...’为什么没打印出来呢?