我正在尝试在不使用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
答案 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