承诺推迟蓝鸟

时间:2016-01-28 08:32:43

标签: javascript promise 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;
} 

我的问题是否有更好的方法来写它?

1 个答案:

答案 0 :(得分:1)

是的,它可以改进,

第1步:停止使用承诺包装承诺:

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())