gpt4 book ai didi

javascript - 在 promise 中抛出一个回调

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:33 24 4
gpt4 key购买 nike

<分区>

我知道 stackoverflow 充满了类似的问题,我已经阅读了很多。

从我得到的一个 throw 里面,一个 promise 应该拒绝它,正如我在 documentation 中读到的那样:

If the executor throws an exception, its value will be passed to the reject resolving function.

但即使在阅读了很多关于 promises 和 throw 的帖子后,我仍然不明白我粘贴的代码片段以及它为什么会发生。

function foo(a, b, cb) {
setTimeout(() => {
cb('Inner error *!?"$%&#@"');
}, 0);
}

const getThePromise = () => {
return new Promise((resolve, reject) => {
const cb = (err) => {

/* >>> ************ */

throw err; // catch not called
// reject(err); // catch called

/* ************ <<< */

}
foo('foo', 'dudee', cb);
});
}

getThePromise()
.catch((err) => {
console.log('CATCH:', err);
})
.then((res) => {
console.log('then...');
})

我不明白为什么如果我使用throw promise 的.catch 没有被调用但是如果我使用reject它被称为。

为了澄清起见,我在 Mac OS/X 10.11 中使用 Node.js v6.2.2,但我不认为这也可能是浏览器问题。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com