尝试回调vs承诺-然后vs async_await,发现回调最快-是吗?

问题描述 投票:0回答:1

我试图在Node.js callbackpromise_thenasync_await之间进行比较,发现callback是最快的。是真的吗不知道我是否正确地解决了这个问题。

我已经为所有三个addcallbackpromise_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的顺序无关紧要?

node.js asynchronous promise async-await callback
1个回答
0
投票

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

  1. 可以是异步或同步的回调。这里可能是您正在使用同步回调。
  2. 如果您有一个异步事件仅在回调中完成一次(例如ajax调用),则promise比回调好得多,因为它们更容易编写]]
© www.soinside.com 2019 - 2024. All rights reserved.