Я пытался сравнить Node.js callback
против promise_then
против async_await
и обнаружил, что callback
- самый быстрый. Это правда? Не уверен, правильно ли я подхожу к этому.
Я создал функцию add
для всех трех callback
, promise_then
и async_await
. Когда следующий код был запущен в узле и результаты распечатывались как 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
не имеет значения?