当前位置: 首页 > 知识库问答 >
问题:

如何拒绝来自内部的promise,然后发挥作用

松锐藻
2023-03-14

这可能是一个愚蠢的问题,但在promise链中间,如何拒绝来自then函数内部的promise?例如:

someActionThatReturnsAPromise()
    .then(function(resource) {
        return modifyResource(resource)
    })
    .then(function(modifiedResource) {
        if (!isValid(modifiedResource)) {
            var validationError = getValidationError(modifiedResource);
            // fail promise with validationError
        }
    })
    .catch(function() {
        // oh noes
    });

不再有对原始解决/拒绝函数或PromiseResolver的引用。我只是应该添加返回Promise.reject(validationError);

共有1个答案

韩明德
2023-03-14

我是否应该添加返回promise.拒绝(validationError)

对然而,只有在jQuery中才如此复杂,有了符合Promise/a的库,您也可以

throw validationError;

这样你的代码就会像

someActionThatReturnsAPromise()
    .then(modifyResource)
    .then(function(modifiedResource) {
        if (!isValid(modifiedResource))
            throw getValidationError(modifiedResource);
        // else !
        return modifiedResource;
    })
    .catch(function() {
        // oh noes
    });

 类似资料:
  • 我试图让我的头周围的promise,我得到了这个错误抱怨未处理的promise拒绝,但我确实有一个<代码>捕捉如果它被拒绝! 谁能帮帮我我做错了什么? 这是我的代码: 错误: (节点:200092)未处理的PromisejectionWarning:未处理的promise拒绝。这个错误要么是由于在没有catch块的情况下抛出异步函数的内部,要么是因为拒绝了没有使用catch块处理的promise。

  • 我在想什么时候我该拒绝一个promise。我发现了几个关于这个话题的问题,但找不到合适的答案。我什么时候应该拒绝promise? 本文http://howtonode.org/6666a4b74d7434144cff717c828be2c3953d46e7/promises 说: 解析:一个成功的promise是“已解析”的,它调用正在等待的成功侦听器,并记住为附加的未来成功侦听器解析的值。分辨率

  • 我正在使用Firebase云消息服务辅助角色处理后台推送通知。 当通知(其中包含一些数据的URL)被点击,我想要么: 焦点窗口,如果它已经在所需的URL 导航到URL并聚焦它,如果已经有一个活动的选项卡打开 如果上述条件都不满足,则打开URL的新窗口 点1和3与下面的SW代码一起工作。 出于某种原因,第2点不起作用。promise被拒绝,原因是: 我认为这可能是由于缺少https,但从我的阅读来看

  • 我的NodeJS应用程序的gcloud应用程序部署权限或帐户没有变化,它上次正常工作是在7月19日。我在几个月的gap后尝试了一下,现在gcloud app deploy抛出了错误: 错误:初始化缓存失败:创建映像缓存失败:访问缓存映像“asia.gcr.io//app-engine-tmp/build-cache/ttl-7d/users/buildpack-cache/ttl-7d/build

  • 我得到这个错误- (节点:18420)未处理的PromisejectionWarning:TypeError:无法读取未定义的属性“name” (节点:18420)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请

  • 我正在尝试编写一个jasmine测试,它有一个间谍, 是一个许诺列表。前几次承诺是拒绝,最后一次是成功。虽然测试顺利通过,但Node抱怨如下: 我的代码非常直接:我创建一个间谍,将它注入到我的代码中,调用我的代码,这将循环调用我的间谍直到它不拒绝,然后监视它被调用了5次。间谍是这样的: 被测试的代码在它的链中最后一个空的 来验证我没有引起那里的问题。AFICT,问题是Node看到我在执行 ,并认为