I know that the async await
is the new Promise
in the town and it is a new way to write asynchronous code and I also know that
We didn’t ha
As most things go, the answer is "it depends".
Before talking about performance, the more important aspect is the maintainability of the code, and limitation of async
/await
vs raw Promise
.
async
/await
is a great way to execute asynchronous code sequentially, while Promise
enables you to run asynchronous code concurrently.
async function foo() {
const a = await backend.doSomething()
const b = await backend.doAnotherThing()
return a + b
}
In the code above, backend.doAnotherThing()
will not be executed until backend.doSomething()
has returned. On the other hand:
function foo() {
Promise.all([backend.doSomething(), backend.doAnotherThing()])
.then(([a, b]) => {
return a + b
})
}
will execute both calls, and wait for both to complete.
As you mentioned about the benefits of async
/await
, I personally use it extensively. Except for the cases above.
If you need performance and to you, the performance difference between async
/await
vs Promise
is more important than the readability benefit of async
/await
over Promise
, by all mean go ahead.
As long as it is a conscious choice, you should be fine.
UPDATE: as mentioned by Derek 朕會功夫
You can get parallel execution with async
/await
by:
async function foo() {
const p1 = backend.doSomething()
const p2 = backend.doAnotherThing()
return await p1 + await p2
}