蓝鸟的承诺延迟

Promise defer in blue bird

我开始用bluebird代替Q

目前我使用的代码如下

runProcess = function(path) {

    var result = Promise.defer();

    fs.readFileAsync(path)
    .then(function (Content) {
            var parser = new parseFile(Content);
            var adpt = parser.update();
            result.resolve(adpt);
    }, function(error) {
            result.reject(error);
    });
    return result.promise;
} 

我的问题是有没有更好的写法?

是的,可以改进,

第一步:停止用承诺包装承诺:

runProcess = function(path) {
   return fs.readFileAsync(path)
    .then(function (Content) {
          var parser = new parseFile(Content);
          return parser.update();
    });
} 

了解 this Promise anti-pattern

在非常短的 ES6 形式中,它可能是:

runProcess = path => fs.readFileAsync(path)
                      .then( content => (new parseFile(content )).update())