试过回调与promise_then与async_await,发现回调是最快的——这是真的吗



我试图在Node.js的callbackpromise_thenasync_await之间进行比较,发现callback是最快的。这是真的吗?不确定我是否正确处理了这个问题。

我已经为所有三个callbackpromise_thenasync_await创建了一个add函数。当在节点中运行以下代码并将结果打印为console.log时,首先打印callback,然后打印promise_then,最后打印async_await,尽管我已经将函数调用安排为最后调用callback

// promise_then
const add_promise = (a, b) => {
return new Promise((resolve, reject) => {
resolve(a + b)
})
}
// async_await
const add_async_await = async() => {
const sum = await add_promise(1, 99)
const sum2 = await add_promise(sum, 50)
const sum3 = await add_promise(sum2, 3)
return sum3
}
// callback
function add_callback(a, b, callback) {
callback(a + b)
}
add_async_await().then((result) => {
console.log('result await', result) // await third fastest (3)??
}).catch((e) => {
console.log('e', e)
})
add_promise(1,99).then((sum) => {
add_promise(sum, 50).then((sum2) => {
add_promise(sum2, 3).then((sum3) => {
console.log('result promise', sum3) // promise second fastest (2)??
})
})
})
add_callback(1, 99, function(sum) {
add_callback(sum, 50, function(sum2) {
add_callback(sum2, 3, function(sum3) {
console.log('result callback', sum3) // callback fastest (1)??
})
})
})

上述代码输出以下内容:

result callback 153
result promise 153
result await 153

给定输出的顺序,这是否意味着callback最快,其次是promise,最后是await?或者console.log的排序无关紧要?

您应该考虑一些要点,然后才能理解。

  1. 回调,可以是异步的,也可以是同步的。这里可能是您正在使用同步回调
  2. 如果您有一个通过回调只完成一次的异步事件(例如ajax调用(,那么promise比回调要好得多,因为它们更容易组合

最新更新