ES8使用箭头功能与异步和等待

时间:2017-08-23 07:17:41

标签: javascript async-await fetch-api arrow-functions ecmascript-2017

我目前正在学习如何使用ES8的fetch,async等待我目前有这个代码可以运行:

const url = "https://api.icndb.com/jokes/random";

async function tellJoke() {
  let data = await (await fetch(url)).json();
  return data.value.joke;
}

tellJoke().then(data => console.log(data));

控制台:

"Chuck Norris can dereference NULL."

但是我找到了一个使用箭头功能的代码片段,问题是我不知道如何在我当前的例子中按照我的方式返回我的值。

片段:

const fetchAsync = async () => 
await (await fetch(url)).json()

如果这不是最佳做法让我知道,欢迎任何进一步阅读。

2 个答案:

答案 0 :(得分:5)

您可以再次使用与缩短常规

相同的方法
async function tellJoke() {
  let response = await fetch(url);
  let data = await response.json();
  return data.value.joke;
}

到您的实施。作为一个单行,它可以看起来像这样:

const tellJoke = async () => (await (await fetch(url)).json()).value.joke;

答案 1 :(得分:3)

在功能中使用相同。如果代码中没有正文表达式(没有sh test.sh ),它将返回语句的结果。在这种情况下,{}

的结果
await (await fetch(url)).json().value.joke

或多线体。使用正文表达式const fetchAsync = async () => (await (await fetch(url)).json()).value.joke; ,您需要在简单函数中显式返回。

{}