should we choose async await over Promise in Javascript

后端 未结 3 1803
小蘑菇
小蘑菇 2021-01-17 16:45

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

3条回答
  •  被撕碎了的回忆
    2021-01-17 17:16

    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
    }
    

提交回复
热议问题