如何在promise

时间:2017-07-24 12:26:25

标签: javascript node.js ecmascript-6 es6-promise

使用此代码,我们有一个包含promise语句的try-catchtry的主体调用一个失败的函数,我想将错误向前传递给promise的catch方法。

function failingFunc() {
    let undef = undefined;
    return undef.nope();
}
let promise = new Promise((resolve, reject) => {
    try {
        let thisWillFail = failingFunc();
        resolve(thisWillFail); 
    } catch (e) {
        reject(e); // (1) Cannot read property 'nope' of undefined
    }
});
promise.then(v => {
    console.log(v);
}).catch(e => {
    console.log(e); // (2)
});

然而,它在(1)处爆炸,从未到达(2)
为什么是这样?我怎样才能获得所需的功能?

编辑1:
我在Node中运行,这是我得到的确切错误:

Screenshot of error

编辑2:
删除try-catch的结果几乎相同: Screenshot of error

编辑3:
当使用vscode调试Nodejs时,这是一个已知的“bug”
正如其解释here,这是由于Promise的节点实现与vscode中的错误处理程序之间的交付和期望之间的某种不匹配而发生的。
这可以通过关闭vscode中的所有错误处理来规避,但是将来可能会发生变化。

最终编辑:
我发布了一个new question,总结了我们对这个明显错误的了解。

0 个答案:

没有答案