Async / await assignment to object keys: is it concurrent?

Viewed 14819

I know that doing this:

const resultA = await a()
const resultB = await b()
// code here

Is effectively

a().then( resultA => {
   b().then( resultB => {
      // code here
   })
})

Basically, a() runs then b() runs. I nested them to show that both resultA and resultB are in our scope; yet both function didn't run at once.

But what about this:

const obj = {
  result1: await a(),
  result2: await b()
}

do a() and b() run concurrently?

For reference:

const asyncFunc = async (func) => await func.call()
const results = [funcA,funcB].map( asyncFunc )

I know here funcA and funcB do run concurrently.

Bonus:

How would you represent the object assignment

const obj = {
  result1: await a(),
  result2: await b()
}

using then / callbacks?


UPDATE:

@Bergi is correct in this answer, this occurs sequentially. To share a nice solution for having this work concurrently for an object without having to piece together the object from an array, one can also use Bluebird as follows

const obj2 = Bluebird.props(obj)

http://bluebirdjs.com/docs/api/promise.props.html

2 Answers
Related