以下是相关代码:
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
会触发此错误。
答案 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();
}
}