可以在JS中使用没有等待的异步吗?

时间:2020-06-14 04:55:24

标签: javascript

我正在尝试在不使用Await的情况下使用Async进行一些实验。所以我在这里所做的是在Fetch API中使用带有承诺的Async。我没有在line 14中获得回报,但是line 8正常工作。随附的代码。应该是什么?非常感谢。

async function getUserAsync(name) 
{
  let data
  fetch(`https://api.github.com/users/${name}`)
  .then(response => response.json())
  .then(response => {
    data = response
    console.log(data)  //line 8
  })
  return data
}

getUserAsync('john')
  .then(data => console.log(data))  //line 14

2 个答案:

答案 0 :(得分:4)

您可以返回fetch()并获得Promise对象。

async function getUserAsync(name) {
  return fetch(`https://api.github.com/users/${name}`)
    .then(response => response.json())
}

getUserAsync('john')
  .then(data => console.log(data))

答案 1 :(得分:2)

或者您可以通过异步函数创建并返回自定义的Promise:

async function getUserAsync(name) 
{
  return new Promise((resolve, reject) => {
    let data
    fetch(`https://api.github.com/users/${name}`)
    .then(response => response.json())
    .then(response => {
      data = response
      console.log(data)  //line 8
      resolve(data)
    })
    .catch(error => reject(error))
  })
}

getUserAsync('john')
  .then(data => console.log(data))  //line 14