BonsaiOak
BonsaiOak

Reputation: 28961

Syntax for an async arrow function

I can mark a JavaScript function as "async" (i.e., returning a promise) with the async keyword. Like this:

async function foo() {
  // Do something
}

What is the equivalent syntax for arrow functions?

Upvotes: 949

Views: 731984

Answers (11)

Ran Turner
Ran Turner

Reputation: 18116

async function foo() {
  // do something
}

Is equivalent to:

const foo = async () => {
   // do something
}

Calling foo with one argument like in the following example:

async function foo(arg1) {
  // do something
}

Is equivalent to calling foo like this (both ways are acceptable since parentheses are optional but not required when just one argument is provided)

const foo = async arg1 => {
  // do something
}

const foo = async (arg1) => {
  // do something
}

if you call foo with two or more arguments

async function foo(arg1, arg2) {
  // do something
}

Is equivalent to: (parentheses are now required)

 const foo = async (arg1, arg2) => {
    // do something
 }

And for a practical example with an await use inside:

const foo = async () => await Promise.resolve('done');

Upvotes: 25

Audu Moses
Audu Moses

Reputation: 71

const asynchronousFunction = async () => {
  // do something;
  // await something else;
}

Upvotes: 7

loic.isaac
loic.isaac

Reputation: 31

For a static async arrow function, it works like this:

static myFunction = async () => {
    // your code here
}

Upvotes: 3

Okot Daniel
Okot Daniel

Reputation: 21

Most simplest way

   const MyFunction = async ()=>{
      // do something here
   }

Upvotes: 2

BonsaiOak
BonsaiOak

Reputation: 28961

Async arrow functions look like this:

const foo = async () => {
  // do something
}

Async arrow functions look like this for a single argument passed to it:

const foo = async evt => {
  // do something with evt
}

Async arrow functions look like this for multiple arguments passed to it:

const foo = async (evt, callback) => {
  // do something with evt
  // return response with callback
}

The anonymous form works as well:

const foo = async function() {
  // do something
}

An async function declaration looks like this:

async function foo() {
  // do something
}

Using async function in a callback:

const foo = event.onCall(async () => {
  // do something
})

Using async method inside of a class:

async foo() {
  // do something
}

Upvotes: 1624

suraj gholap
suraj gholap

Reputation: 387

My async function

const getAllRedis = async (key) => {
  let obj = [];

  await client.hgetall(key, (err, object) => {
    console.log(object);
    _.map(object, (ob)=>{
      obj.push(JSON.parse(ob));
    })
    return obj;
    // res.send(obj);
});
}

Upvotes: 7

Chaurasia
Chaurasia

Reputation: 496

Basic Example

folder = async () => {
    let fold = await getFold();
    //await localStorage.save('folder');
    return fold;
  };

Upvotes: 22

codemirror
codemirror

Reputation: 3582

Async Arrow function syntax with parameters

const myFunction = async (a, b, c) => {
   // Code here
}

Upvotes: 22

Edoardo L'Astorina
Edoardo L'Astorina

Reputation: 7285

This the simplest way to assign an async arrow function expression to a named variable:

const foo = async () => {
  // do something
}

(Note that this is not strictly equivalent to async function foo() { }. Besides the differences between the function keyword and an arrow expression, the function in this answer is not "hoisted to the top".)

Upvotes: 153

Mihail
Mihail

Reputation: 1396

Immediately Invoked Async Arrow Function:

(async () => {
    console.log(await asyncFunction());
})();

Immediately Invoked Async Function Expression:

(async function () {
    console.log(await asyncFunction());
})();

Upvotes: 111

Justin E. Samuels
Justin E. Samuels

Reputation: 887

You may also do:

 YourAsyncFunctionName = async (value) => {

    /* Code goes here */

}

Upvotes: 16

Related Questions