我具有以下功能:
第三方承诺的search(id)函数,该函数获取返回承诺的ID和带有结果的数据对象
我将其包装在一个checkItemExists(id)函数中,该函数运行一个search(id)并在找到结果后返回true或false。
此checkItemExists(id)函数由另一个函数validateID(id)包装,该函数执行某些表单逻辑,例如,如果项目是唯一的,则启用表单等。
validateID(id) => {
checkItemExists(id).then((response) => {
if (response) {
// perform some logic
} else {
// perform some logic
}
}).catch (err) {
// catch the error, handle and log it
}
}
checkItemExists (id) => {
// third party promisified search function
search(id).then((response) => response {
const itemsFound = response.data.listItems.items.length
itemExists = itemsFound > 0 ? true : false
return Promise.resolve(itemExists)
}).catch(err) => {
console.log("In check item exists")
return Promise.reject(err)
}
}
如果我将空ID传递给搜索函数,它将返回一个被拒绝的Promise。 此承诺使其进入checkItemExists的catch块,并注销“存在检查项”。
但是它还会引发“可能的未处理的承诺拒绝”错误,并且不会一直将拒绝传递到我想处理的validateID上。
如果我想在validateID中进行所有错误处理,那我想念什么?