赶上承诺拒绝

时间:2019-08-07 11:13:43

标签: javascript promise es6-promise

我具有以下功能:

第三方承诺的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中进行所有错误处理,那我想念什么?

0 个答案:

没有答案