async 和 await 是把异步书写代码的方式改变为同步,代码结构更清晰简洁,便于后期的维护,解决了回调地狱的问题。
① async 是一个修饰符,它定义的函数会返回一个Promise对象,因此可以直接进行 then 操作,返回的为 then 方法的传入函数。
② await 关键字只能放在 async 函数内部,await 关键字的作用是获取Promise中返回的内容。
③ 获取的内容是Promise函数中的 resolve 或者 reject 的值。
④ 如果 await 后面不是一个Promise的返回值,则会按照同步程序的返回值处理,返回为undefined
function asyncfn(url) {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest()
xhr.open('GET', url)
xhr.send()
xhr.onreadystatechange = function () {
if (xhr.readyState===4){
if(xhr.status==200){
console.log('成功了');
resolve(xhr.responseText)
}else{
console.log('失败了');
reject(xhr.status)
}
}
}
})
}
async function time(bb){
let aa=await asyncfn("data.json")
console.log('111',aa);
}
time()