【发布时间】:2020-10-11 09:44:36
【问题描述】:
我正在尝试用 promise 替换 async/await(同时保留代码的逻辑/目的/结果),但很难理解使用 promise 导致的问题。当我尝试使用 Promise 执行新版本的代码时,浏览器冻结并且似乎正在执行无限循环。你能帮我理解问题是什么吗?
这里是使用 async/await 的代码的工作状态
async fetchNewJokes() {
let newJokes = [];
while (newJokes.length < 10) {
const {data} = await axios.get('https://icanhazdadjoke.com/', {
headers: {
Accept: 'application/json',
},
});
newJokes.push(data.joke);
}
this.setState({
jokes: newJokes,
});
}
这是尝试用 promise 替换 async await
fetchNewJokes() {
let newJokes = [];
while (newJokes.length < 10) {
axios.get('https://icanhazdadjoke.com/', {
headers: {
Accept: 'application/json',
},
}).then({data}=>{
newJokes.push(data.joke);
})
}
this.setState({
jokes: newJokes,
})
}
【问题讨论】:
-
“你能帮我理解问题是什么吗?” - 试着理解
await做了什么 -
"我正在尝试用 promise 替换 async/await" -
async/await基于 promise。您似乎正在尝试将await替换为.then()。 -
@Bergi 您能否详细说明您的评论?
标签: javascript reactjs while-loop async-await es6-promise