Can an "async" JavaScript Function be Called Without "await"?

In JavaScript, it is possible to call an async function without await, in which case a Promise object is immediately returned:

function sleep() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}

async function asyncCall() {
  return sleep();
}

console.log(asyncCall()); // Promise { <pending> }

In this example, the returned Promise is in pending state — i.e. it is unresolved. This means that, since the async function is called without an await, the program continues execution without waiting for the Promise to resolve.

To handle the resolution of the Promise without using await, you can chain a Promise.prototype.then() method to the returned Promise object, for example, like so:

// ...

const result = asyncCall();

console.log(result); // Promise { <pending> }
result.then((val) => console.log(result)); // 'resolved'

This will execute the callback associated with Promise.prototype.then() if the Promise successfully resolves.


Hope you found this post useful. It was published . Please show your love and support by sharing this post.