问:什么是async?
答:就是一个异步函数,也是generator的语法糖,不过它返回的是一个Promise,要配合await关键字使用。
需求:
发送一次网络请求,等到这次网络请求有结果,再发送一次网络请求把这一次的结果返回出去,等到这次网络请求的结果完成,再发送一次网络请求把上一次的结果返回出去,等到这次网络请求的结果,以此类推
网络请求如下
function requestData(url) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(url)
}, 2000)
})
}
方式一:层层嵌套 产生回调地狱,阅读性差
function getData() {
requestData("wuxueying").then(res => {
console.log("第一次结果:", res)
requestData(res + "wuqiuqing").then(res => {
console.log("第二次结果:", res)
requestData(res + "wujianhui").then(res => {
console.log("第三次结果:", res)
})
})
})
}
方式二:使用异步函数
async function getData() {
const res1 = await requestData("wxy")
console.log("第1次结果:", res1)
const res2 = await requestData("wqq" + res1)
console.log("第2次结果:", res2)
const res3 = await requestData("wjh" + res2)
console.log("第3次结果:", res3)
}
const gengerator = getData()