【发布时间】:2017-07-27 16:48:03
【问题描述】:
我听到这样一种意见,您应该完全避免使用 try/catch,因为它需要很多资源。那么,promise 错误处理可以更快吗?还是根本不重要?
function f(somethingDangerous) {
return new Promise((resolve, reject) => {
// try {
// somethingDangerous();
// resolve();
// } catch (err) {
// reject(err);
// }
// VS
somethingDangerous();
resolve();
}).catch((err) => {
console.error('Catched: ' + err);
});
}
f(() => {throw 'DANGEROUS THING';});
UPD:我知道 try/catch 不适用于内部的异步代码。我只是想知道是否有任何理由因为性能问题而避免使用 try/catch?以上两种方法有什么区别吗?
UPD2:试图和我的马赛跑:) https://jsperf.com/try-catch-vs-promise
【问题讨论】:
-
我通常的建议:Race your horses.
-
你在哪里读到的?请引用您的消息来源,以便我们责怪他们。
-
@Bergi,实际上我不记得了。就在某个地方……这个想法引发了这个问题。也许我只是不明白一些事情。这就是我问的原因。因为这句话对我来说似乎很可疑。
-
请注意
.catch(e => Promise.reject(e))是 as pointless as.then(r => Promise.resolve(r))并且应该从您的赛车代码中删除 -
你的“马”会产生不同的结果...Firefox,try/catch 快 4%,Chrome 慢 11%...据我所知,每个 Promise 库都使用 try/无论如何都要在内部捕获
标签: javascript node.js promise try-catch es6-promise