【震惊】Node爆惊天大bug,影响数千万Node.js进程!他竟然一行代码就修复了!他到底做了啥?
 发布于 8 年前  作者 zengming00  6648 次预览  最后一次回复是 8 年前  来自 问答 

很多天前old big让我测试在async中throw和return的效率,偶然踩中了坑

async function foo() {
    throw new Error();
}
(async function test() {
    for (let i = 0; i < 100000; i++) {
        try {
            await foo();
        } catch (e) {
        }
    }
})();
console.log('done');

是什么原因呢?

下面仅仅四行代码也硬了

for (let i = 0; i < 100000; i++) {
    Promise.reject().catch(e => { });
}
console.log('done');
// 只需一行代码。node就冷静下来了
global.Promise = require('bluebird');
for (let i = 0; i < 100000; i++) {
    Promise.reject().catch(e => { });
}
console.log('done');
7 回复
ImSiegeLion

(¬_¬)真是学以致用

ImSiegeLion

你成功通过了UC头条部的考核,请于明日到总部报道。

kyriosli

真是头条体。。 目测是Promise实现问题,node的promise是自己实现的,用的也不是v8的Promise

sunkuo

楼主没有打印执行时间?

eyblog

明天来UC震惊部上班