gpt4 book ai didi

javascript - 如果在循环内抛出错误,则中断 promise 映射

转载 作者:行者123 更新时间:2023-12-03 03:40:56 25 4
gpt4 key购买 nike

我正在使用 Hapi Js 和 Sequelize 对我的 API 执行一些操作,在这种情况下,我需要先检查所有内容,然后再进行下一步。

这是我的代码

return promise.map(array, function (values) {
models.Goods.find({
where: {
id: values.id
}
}).then(function (res) {
if (!res || res.length === 0) {
throw new Error("Item not found");
}
});

}).then(function (res) {
//do something after check
//next step
}).catch(function(error) {
console.log(error.message);
});

在进行下一步之前,我需要检查 id 是否在我的数据库中,但在这段代码中,如果有任何错误,抛出新错误(“找不到项目”); 永远不会转到catch function,所以我尝试做一些事情来获取错误函数。我更改了promise.map中的代码,将catch函数放入models.Goods和console.log中,错误出现但promise.map仍在运行并转到//下一步部分而不停止。

如果 models.Goods 中有错误,请帮助我如何破坏 promise.map

谢谢

最佳答案

我认为你只是忘记归还模型,这个

return promise.map(array, function (values) {
models.Goods.find({
where: {

应该是:

return promise.map(array, function (values) {
return models.Goods.find({
where: {

如果使用箭头 functions,则可以省略 return 关键字.
这是一个例子,我也放了一些object destructuring .

return promise.map(array, ({id}) => 
models.Goods.find({
where: {id}
}).then(res => {
if (!res || res.length === 0) {
throw new Error("Item not found");
}
}) // can't have ; here now
).then(res => {
// do something after check
// next step
}).catch(error => {
console.log(error.message);
});

关于javascript - 如果在循环内抛出错误,则中断 promise 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45629244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com