Ben*_*Ben 6 javascript promise
我有一些看起来像这样的代码:
function foo() {
var deferred;
deferred = q.defer();
doSomethingAsync()
.then(function(result) {
var resultTransformed = doSomethingSynchronousToTheResult(result);
deferred.resolve(resultTransformed);
});
return deferred.promise;
};
Run Code Online (Sandbox Code Playgroud)
也许:
function foo() {
return doSomethingAsync()
.then(function(result) {
return doSomethingSynchronousToTheResult(result);
});
};
Run Code Online (Sandbox Code Playgroud)
以上是否可以确保转换结果在承诺链中进一步使用?
我怎样才能重构这个以避免延迟的反模式?
当创建新的冗余延迟对象以从promise链内部解析时,会发生延迟反模式.
在你的情况下你已经有了一个Promise对象,所以你只需要返回doSomethingAsync()结果:
function foo() {
return doSomethingAsync().then(function (result) {
return doSomethingToTheResult(result);
});
};
Run Code Online (Sandbox Code Playgroud)
以上是否可以确保转换结果在承诺链中进一步使用?
是的,确切地说,这是有关承诺的最酷的事情之一.
| 归档时间: |
|
| 查看次数: |
1145 次 |
| 最近记录: |