promise 如何知道所有的回调都执行完了?
var fs = require('fs'); /** * @return {object} Promise */ function doThing(fileName) { // ... // console.log(fileName); // do something and return a promise } /** * @return {object} Promise */ function walk(fileName, cb) { var pList = []; var states = fs.statSync(fileName); if (states.isDirectory()) { var files = fs.readdirSync(fileName); files.forEach(function(file) { pList.push(walk(fileName + '/' + file, cb)); }); } else if (states.isFile()) { pList.push(cb(fileName)); } return Promise.all(pList); } walk('filename', doThing).then(function() { console.log('done'); }).catch(function(err) { console.log(err); });
原地址:http://cnodejs.org/topic/568dc05ac2289f51658f0856