javascript - 来自 API 的 Promise.all 拒绝

标签 javascript ecmascript-6 promise es6-promise

我已经查看了其他 stackoverflow 答案,但似乎找不到这个问题的答案。

实际上,我正在编写一个模块来验证一些数据,如果没有错误,则将其传递给第三方 api。

我的问题是,如果 Promise.all 拒绝,那么我最初的调用 promise 仍然会转到下一个。

------my main app---------

const data = [1,0,1]
api.sendData(data)
    .then( () => {
         *ALWAYS HITTING THIS*
     })
    .catch(err => console.log(err))

---------the api---------

return await a.test(data).then(rd => {
    return rd
})
.catch(ed => {
    return ed
});

-----a.test function--------

let request = data.map((i) => {
    return new Promise((resolve, reject) => {
        if(i < 1) {
           reject('value to low')
        }
        resolve(i);
     });
});
    return await Promise.all(data)
});

谁能告诉我为什么我的主应用程序没有命中我的捕获物? 上面的代码是伪代码,但描述了问题。

最佳答案

我认为问题出在您在 api 函数和 catch method return a new promise 中捕获错误这一事实(当你有效地返回一个值时完成)

所以如果你没有发现错误,你的问题应该被修复,因为错误将被转发

return a.test(data).then(rd => {
   // do some stuffs ...

   return rd;
})
// no catch

关于javascript - 来自 API 的 Promise.all 拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47995737/

相关文章:

error-handling - 父类(super class)构造函数调用应该在构造函数主体中

javascript - 如何在 promise 中履行 promise

用于代码 View 的 javascript 库?

javascript - dojo/on with mouseenter, mouseleave 在 Google Chrome 中不工作

javascript - 如何根据条件向数组添加项目

javascript - React 中表单元素的委托(delegate)

javascript - 将 Promise 嵌入 Promise 中

javascript - 卸载前保存到 IndexedDB

javascript - event 是一个全局变量,可以在回调链中的任何地方访问吗?

javascript - Messenger "Get Started"按钮无法开始对话