javascript - 避免延迟反模式

标签 javascript promise

<分区>

我有一些看起来像这样的代码:

function foo() {

    var deferred;

    deferred = q.defer();

    doSomethingAsync()
        .then(function(result) {
            var resultTransformed = doSomethingSynchronousToTheResult(result);
            deferred.resolve(resultTransformed);
        });

    return deferred.promise;

};

也许:

function foo() {            
    return doSomethingAsync()
        .then(function(result) {
            return doSomethingSynchronousToTheResult(result);
        });       
};

以上是否能确保转换后的结果在 promise 链的下游使用?

我如何重构它以避免延迟反模式?

最佳答案

当创建新的冗余延迟对象以从 promise 链内部解析时,会发生延迟反模式。

在你的例子中,你已经有了一个 Promise 对象,所以你只需要返回 doSomethingAsync() 结果:

function foo() {
    return doSomethingAsync().then(function (result) {
        return doSomethingToTheResult(result);
    });
};

Would the above ensure that the transformed result is used further down the promise chain?

是的,没错,这是关于 promises 最酷的事情之一。

关于javascript - 避免延迟反模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28764182/

相关文章:

javascript - 如果未找到子字符串,则正则表达式匹配

javascript - 理解js中的fetch

javascript - 使用javascript删除字符串中最后出现的逗号

javascript - 模块的 Node 模块多个调用方向

JavaScript getElementByID 有什么简短的方法可以完成相同的工作吗?

node.js - 当抛出的任何错误都没有冒泡时,如何在 promise 中做出断言?

javascript - 移除嵌套的 Promise

javascript - 如何测试触发设置 3rdparty cookie 的 Javascript

javascript - 如何将两个单独的查询传递给 promise 链末尾的回调函数?

node.js - NodeJS 中的 Firebase javascript promise