Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

269
Views
Why does property access with await appear to result in `undefined` when the object is returned from an async function?

Please run the snippet and observe the output code to understand my issue. I stripped the problem down and made the console.logs easy to understand.

It seems that the suggested syntax for accessing object properties works in synchronous functions but does not work in an asynchronous function.

The suggested syntax to access object properties does not to work inside of async functions. Is there a logical reason for this difference in behavior, have I overlooked something in my syntax, or is this an inconsistency in JavaScript’s async objects.

var goo = (function() {
  let a = "as";
  let b = "boot";
  
  return {
    a,
    b
  }
})();

(function() {
  console.log("console.log 1:", goo)
  console.log("console.log 1.5:", goo.a);
  console.log("console.log 1.75:", goo["a"]);
})();

var go = (async function() {
  let a = "asile";
  let b = "beet";
  return {
    a,
    b
  }
})();

(async function() {
  console.log("console.log 2:", await go);
  console.log("console.log 2.5:", await go.a);
  console.log("console.log 2.75:", await go["a"]);
})();

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Your goo evaluates to a plain object, but your go evaluates to a Promise:

var go = ( async function(){
    let a = 'asile';
    let b = 'beet';
    return {a:a,b:b}
})();

So go doesn't have properties of a and b - it's not the object that the Promise resolves to, it's only the Promise. You need to either

  • extract the resolve value from the Promise before working with it, or
  • remove the async from go's IIFE so that it returns the object, and not a promise that resolves to the object.

var go = ( function(){
    let a = 'asile';
    let b = 'beet';
    return {a:a,b:b}
})();

(async function(){
    console.log('console.log 2:'+  await go);
    console.log('console.log 2.5: ' + await go.a);
    console.log('console.log 2.75:'+  await go['a']);
})();

var goProm = (async function(){
    let a = 'asile';
    let b = 'beet';
    return {a:a,b:b}
})();

goProm.then((go) => {
  (async function(){
      console.log('console.log 2:'+  await go);
      console.log('console.log 2.5: ' + await go.a);
      console.log('console.log 2.75:'+  await go['a']);
  })();
});

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!