异步箭头函数的语法

IT技术 javascript promise async-await arrow-functions
2021-01-18 03:57:21

我可以使用async关键字将 JavaScript 函数标记为“异步”(即返回Promise)像这样:

async function foo() {
  // Do something
}

箭头函数的等效语法是什么?

6个回答

异步箭头函数如下所示:

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

对于传递给它单个参数,异步箭头函数看起来像这样

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

对于传递给它的多个参数,异步箭头函数看起来像这样

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

匿名形式的作品,以及:

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

异步函数声明如下所示:

async function foo() {
  // do something
}

回调中使用异步函数

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

类中使用异步方法

async foo() {
  // do something
}
@FarisRayhan 与其他常量一样,变量的引用somefunction在设置后无法更改。(它指向您的匿名异步函数。)
2021-03-15 03:57:21
OP 似乎正在寻找一个命名的、异步的、箭头函数,这是您没有显示的一种语法。
2021-03-16 03:57:21
实际上,const foo = async () => {}创建一个名为foo. 完全有可能以这种方式执行命名函数(只是没有提升)。在 ES2016+ 中,将匿名函数分配给变量,如果变量在那里声明,则以变量命名。
2021-03-21 03:57:21
@BenjaminGruenbaum 请不要称之为命名函数。在 js 中,命名匿名函数是一种非常特殊的语法foo = function bar () {},它是arguments.callee在编写递归匿名函数时创建的你有一个名为的变量foo,它是对函数的引用。
2021-03-22 03:57:21
@slebetman 自 ES2015 以来,当您const foo = async () => {}将函数名称设置为foo- ecma-international.org/ecma-262/6.0/...ecma-international.org/ecma-262/6.0/... - 参见esdiscuss.org 中的讨论/话题/…
2021-04-06 03:57:21

分配一个简单的方法async箭头函数表达式命名变量:

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

(请注意,这并不严格等同于async function foo() { }。除了关键字和箭头表达式之间的差异function之外,此答案中的函数并未“提升到顶部”。)

请注意,命名函数表达式是 javascript 中非常特殊的语法。这不是命名函数表达式。使用正确的词很重要,以避免稍后在一个短语可以演变为意味着两件事时混淆。仅供参考,命名函数表达式为:foo = function myName () {}名称 ismyName并且它被指定为仅存在于匿名函数内部,而未在外部任何地方定义。它的目的是arguments.callee在编写递归匿名函数时进行替换
2021-03-17 03:57:21
换句话说,没有“命名箭头函数表达式”这样的东西,但它可以通过成为 const 或 let语句的一部分(由于提升而不确定 var 的一部分)而成为“命名” ,从某种意义上说一个名称fn.name以及在范围内绑定(变量)。
2021-03-18 03:57:21
我正要在技术上对你@slebetman 提出异议,因为这是一个(箭头)函数表达式,你最终得到了一个命名函数(即foo.name === 'foo')。但仅仅因为它在const*statement*的初始化程序中——这意味着将其称为“命名异步箭头函数表达式”并不完全正确。您也正确,命名函数表达式的名称仅绑定在其自身的主体内,但它也存储在函数的name属性中,这对调试非常有用(并且通常是我命名它们的原因)。
2021-04-10 03:57:21

立即调用异步箭头函数:

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

立即调用异步函数表达式:

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

带参数的异步箭头函数语法

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

基本示例

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