【震惊】Node爆惊天大bug,影响数千万Node.js进程!他竟然一行代码就修复了!他到底做了啥?
很多天前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 回复
(¬_¬)真是学以致用
你成功通过了UC头条部的考核,请于明日到总部报道。
哈哈
真是头条体。。 目测是Promise实现问题,node的promise是自己实现的,用的也不是v8的Promise
楼主没有打印执行时间?
Node原生的Promise本来就有一些效率问题,之前bluebird的作者有提到过。 http://softwareengineering.stackexchange.com/questions/278778/why-are-native-es6-promises-slower-and-more-memory-intensive-than-bluebird
明天来UC震惊部上班