蓝鸟的承诺延迟
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())
我开始用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())