有些回调需要调用上面一个回调之后处理过的结果,对于怎么重构这个代码,我有点迷糊,希望大神帮我看看。
async.waterfall([ function(cb) { log('1.1.1: ', ‘start’); cb(null, 3); }, function(n, cb) { log('1.1.2: ',n); t.inc(n, cb); }, function(n, cb) { log('1.1.3: ',n); t.fire(n*n, cb); } ], function (err, result) { log('1.1 err: ', err); log('1.1 result: ', result); });
这种经典callback hell问题 你可以安装个q模块或者bluebird 用promise写的好看点 举个例子 fs.readFile(fileA, function (err, data) { fs.readFile(fileB, function (err, data) { // … }); }); 可以改写为 var readFile = require(‘fs-readfile-promise’);
readFile(fileA) .then(function(data){ console.log(data.toString()); }) .then(function(){ return readFile(fileB); }) .then(function(data){ console.log(data.toString()); }) .catch(function(err) { console.log(err); });