这里是 jsperf: http://jsperf.com/promise-vs-callback
回调函数案例(211 操作/秒):
// async test
var d = deferred;
function getData(callback) {
setTimeout(function() {
callback('data')
}, 0)
}
getData(function(data) {
d.resolve()
})
Promise案例(614次操作/秒):
// async test
var d = deferred;
function getData() {
return new Promise(function(resolve) {
setTimeout(function() {
resolve('data')
}, 0);
})
}
getData().then(function(data) {
d.resolve()
})
正如你所看到的,Promise比Deferred更快,但它们的代码更多。问题是为什么会这样。
在这里,deferred
被JSPerf定义为异步测试的完成。