我已经查看了其他 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/