使用异步等待让.then消失

时间:2019-02-20 03:35:45

标签: javascript async-await

请求:

异步等待此行:fetch(url).then(resp => resp.json())

所以不应该再有.then()调用了!

原始代码:

    const urls = [
  'https://jsonplaceholder.typicode.com/users',
  'https://jsonplaceholder.typicode.com/posts',
  'https://jsonplaceholder.typicode.com/albums'
]

const getData = async function() {
  const [ users, posts, albums ] = await Promise.all(urls.map(url =>
      fetch(url).then(resp => resp.json())
  ));
  console.log('users', users);
  console.log('posta', posts);
  console.log('albums', albums);
}
getData();

我在JS中尝试的方式:

 const [ users, posts, albums ] = await Promise.all(urls.map
 (url=>
     resp = await fetch(url);
     data = await resp.json();
 ));

我希望输出与原始代码相同

1 个答案:

答案 0 :(得分:3)

您的函数不返回任何内容,并且未标记为async(使用await的任何函数都需要)。此外,不声明变量也不是很酷。

const [users, posts, albums] = await Promise.all(urls.map(async url => {
    const resp = await fetch(url);
    const data = await resp.json();
    return data;
}));

编辑:而且,guest271314所说的-由于内部函数不是一个简单的表达式,现在需要curls。