背景:
代码 下面的代码创建了一系列的睡眠承诺'。我们的想法是更换Bluebird promise实现,并观察测试时间超过5000 Promises的时间。
var Promise = require("bluebird"); // comment out for native implementation
function sleep(time) {
return new Promise(function (resolve, reject) {
setTimeout(function() {
// process.stdout.write(".");
resolve(true);
}, time);
});
}
// the function is badly named, please ignore
function nativePromiseSequence(n) {
// dont know how this first line works
const arr = Array.apply(null, Array(n)).map(function () {});
return arr.reduce(function(sequence, e, i, a) {
return sequence.then(function() {
return sleep(1);
});
}, Promise.resolve());
}
测试 我正在使用' chai-as-promised'用于测试承诺。
it('Run 5000 promises in a chain', function() {
this.timeout(7000);
return nativePromiseSequence(5000).should.eventually.equal(true);
});
结果 在一个5000的Promise链中,Bluebird实现的测试比Native承诺的慢了一秒
我在这里犯过错误还是错过了什么?