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

posted @ 2017-07-27 15:16  Redchar  阅读(3055)  评论(0编辑  收藏  举报