这是有问题的代码:
new Promise((resolve,reject) => {
const opts = {
credentials: 'same-origin',};
fetch(`/_api/myAPI`,opts)
.then((res) => {
if (!res.ok) {
reject(res);
} else {
...
如果url抛出异常401,则执行到达reject(res);它抛出未捕(承诺)
即使我在.then调用后添加.catch,即
fetch(`/_api/myAPI`,opts)
.then((res) => {
if (!res.ok) {
reject(res);
} else {
...
})
.catch((e) => {
console.log(e);
}
它仍然发生.
为什么拒绝会抛出此异常,我该如何解决?我的经验仅限于jQuery.Promise,我不会在失败处理程序中拒绝将触发此错误.
解决方法
当你拒绝承诺时,你会立即拒绝包装整个操作的承诺,所以你永远不会得到那个catch块.
类比:拒绝和决心是承诺,因为回归是功能.
我想你要做的是下面的代码.
new Promise((resolve,};
fetch(`/_api/myAPI`,opts)
.then((res) => {
if (!res.ok) {
return Promise.reject()
} else {
...
resolve(...);
})
.catch((e) => {
console.log(e);
reject();
}
}