"未被捕(承诺)"当在提取中调用拒绝功能时,然后'方法

时间:2016-04-23 03:15:52

标签: javascript ecmascript-6

以下是相关代码:

O_WRONLY

如果url抛出异常401,当执行到达new Promise((resolve, reject) => { const opts = { credentials: 'same-origin', }; fetch(`/_api/myAPI`, opts) .then((res) => { if (!res.ok) { reject(res); } else { ... 时,它会抛出reject(res);

即使我在Uncaught (in promise)电话后添加.catch,即

.then

它仍然会发生。

为什么 fetch(`/_api/myAPI`, opts) .then((res) => { if (!res.ok) { reject(res); } else { ... }) .catch((e) => { console.log(e); } 会抛出此异常,我该如何解决?我的经验仅限于reject,而我在失败处理程序中不会jQuery.Promise会触发此错误。

1 个答案:

答案 0 :(得分:10)

当您拒绝承诺时,您立即拒绝承包整个操作的承诺,因此您永远不会进入该阻止块。

一个类比:拒绝和决心是承诺,因为回归是功能。

我认为你要做的是下面的代码。

new Promise((resolve, reject) => {
  const opts = {
    credentials: 'same-origin',
  };
  fetch(`/_api/myAPI`, opts)
  .then((res) => {
    if (!res.ok) {
      return Promise.reject()
    } else {
      ...
      resolve(...);
   })
  .catch((e) => {
    console.log(e);
    reject();
   }
}