本机解析函数可以抛出吗?

时间:2017-10-27 23:46:40

标签: javascript exception-handling promise

让我们说我在Chrome上。我这样做:

new Promise(function (resolve, reject) {
    // ... do some work
    resolve('foo');
}).then(doStuff).then(doMoreStuff);

“解决”调用是否可以抛出异常? doStuff或doMoreStuff可以做什么,这会让'resolve'抛出异常吗?

1 个答案:

答案 0 :(得分:0)

如果doStuffdoMoreStuff抛出异常,它将在调用.then()的上下文中抛出,而不是函数体。到调用.then()时,该函数已返回。那里的代码是异步执行的。

如果您想捕获异常,则需要将try放在doStuff

的调用周围
new Promise(function (resolve, reject) {
    // ... do some work
    resolve('foo');
}).then(x => {
try {
    doStuff(x);
} catch (e) {
    console.log("Error in doStuff");
}).then(doMoreStuff);