Ecmascript 6 ES6或ES7中的语法是什么?

Ecmascript 6 ES6或ES7中的语法是什么?,ecmascript-6,ecmascript-2016,Ecmascript 6,Ecmascript 2016,我遇到了这个语法,我相信是ES6或ES7。这些代码行是做什么的 module.exports = async (taskData) => { // do stuff } 它导出一个异步函数,该函数接受一个参数taskData。异步函数是一种新的语法,今年的版本ES2017将其命名为,尽管其余代码是ES6(ES2015)和ES5(ES2011)。它与一个函数同时运行并返回一个函数 它主要用于清理承诺链,因为其中的代码可能会变得非常混乱。用承诺来考虑这个例子,发现: 上面的示例获取一个故

我遇到了这个语法,我相信是ES6或ES7。这些代码行是做什么的

module.exports = async (taskData) => {
  // do stuff
}

它导出一个异步函数,该函数接受一个参数
taskData
。异步函数是一种新的语法,今年的版本ES2017将其命名为,尽管其余代码是ES6(ES2015)和ES5(ES2011)。它与一个函数同时运行并返回一个函数

它主要用于清理承诺链,因为其中的代码可能会变得非常混乱。用承诺来考虑这个例子,发现:

上面的示例获取一个故事,并遍历所有章节并将它们添加到HTML中。它是有效的,但如果你有很多事情要做,它可能会很混乱,很难理解。相反,您可以使用
async
await
,这只是语法上的甜点,但会使它更加简洁:

async function loadStory() {
  try {
    let story = await getJSON('story.json');
    addHtmlToPage(story.heading);
    for (let chapter of story.chapterURLs.map(getJSON)) {
      addHtmlToPage((await chapter).html);
    }
    addTextToPage("All done");
  } catch (err) {
    addTextToPage("Argh, broken: " + err.message);
  }
  document.querySelector('.spinner').style.display = 'none';
}

在我看来,与第一个示例中杂乱无章的承诺链相比,上面的方法更清晰、更容易理解。

它导出一个异步函数,该函数接受一个参数
taskData
。异步函数是一种新的语法,今年的版本ES2017将其命名为,尽管其余代码是ES6(ES2015)和ES5(ES2011)。它与一个函数同时运行并返回一个函数

它主要用于清理承诺链,因为其中的代码可能会变得非常混乱。用承诺来考虑这个例子,发现:

上面的示例获取一个故事,并遍历所有章节并将它们添加到HTML中。它是有效的,但如果你有很多事情要做,它可能会很混乱,很难理解。相反,您可以使用
async
await
,这只是语法上的甜点,但会使它更加简洁:

async function loadStory() {
  try {
    let story = await getJSON('story.json');
    addHtmlToPage(story.heading);
    for (let chapter of story.chapterURLs.map(getJSON)) {
      addHtmlToPage((await chapter).html);
    }
    addTextToPage("All done");
  } catch (err) {
    addTextToPage("Argh, broken: " + err.message);
  }
  document.querySelector('.spinner').style.display = 'none';
}

在我看来,与第一个示例中混乱的承诺链相比,上面的方法更干净、更容易理解。

这是一个异步函数,设置为返回@Andrew所说的承诺。 它使用的是语法


此函数在ES6中,不定义其自身的
上下文,对
的任何使用都将引用外部范围

这是一个异步函数,设置为返回@Andrew所说的承诺。 它使用的是语法


此函数在ES6中,不定义其自身的
上下文,对
的任何使用都将引用外部范围

异步等待
语法设置为在ES2017发布时受支持。您的代码本质上是一个返回函数的函数。此外,关键字允许在使用关键字处理承诺时使用

=>
部分被称为an,这在大多数情况下也是一种语法上的糖分。它是ES6的一部分

您的职能

module.exports = async (taskData) => {
  // do stuff
}
。。。与以下内容几乎相同:


注意:主要区别在于通过箭头函数绑定
关键字。

异步等待
语法设置为在ES2017发布时受支持。您的代码本质上是一个返回函数的函数。此外,关键字允许在使用关键字处理承诺时使用

=>
部分被称为an,这在大多数情况下也是一种语法上的糖分。它是ES6的一部分

您的职能

module.exports = async (taskData) => {
  // do stuff
}
。。。与以下内容几乎相同:


注意:主要区别在于通过箭头功能绑定
这个
关键字。

ES7是去年发布的。你是说ES2017.ES7是去年发布的。你的意思是ES2017。今年的ES2017版本中既不会引入语法,也不会引入语法。今年的ES2017版本中也不会引入语法。
module.exports = function(taskData) {
  return new Promise(function() {

    // do stuff
    if (err) reject(err)
    resolve(your return value)
  }
}