1.举两个个简单的例子
1.执行一个promise
2.await后面一定要跟promise
3.await一定是在一个async函数里面的
/解释第二遍/
1.async关键字可以将一个普通函数变为promise
2.await关键字可以获取promise的结果
3.await仅仅在async函数中有效
4.等待后面promise执行完毕才会执行后面的代码
1-1:
async function getCat(){
return "华语"
}
async function detail(){
return "detail"
}
async function url(){
return "url"
}
async function getRes(){
var cat = await getCat();
console.log(cat)
var de = await detail();
console.log(de)
var l = await url();
console.log(l)
}
getRes()
1-2:
<script>
/* 在函数前面加上async可以将一个普通函数变为promise */
async function go(){
return 1;
}
go().then(res=>{
console.log(res)
console.log(2)
})
/*
await关键字1.只能在async函数中使用 2.后面只能是promise
作用:等待后面promise执行完毕才会执行后面的代码
*/
async function getData(){
var data = await go();
console.log(data)
}
getData()
//打印1 2 1
</script>
2.封装,运用在获取接口中
<script>
async function getRes(){
var cat = await http('top/playlist',{cat:"华语"})
var id =cat.playlists[0].id;
var detail = await http('playlist/detail',{id})
var url = await http('song/url',{id:detail.playlist.trackIds[0].id});
console.log(url)
}
getRes()
</script>
//封装代码
var baseUrl = "https://music.aityp.com/"
function http(url,data){
return new Promise((resolve,reject)=>{
$.ajax({
url:baseUrl+url,
type:"get",
data,
success:res=>{
resolve(res)
},
error:err=>{
reject(err)
}
})
})
}
// function getCat(){
// return http('top/playlist',{cat:"华语"})
// }
3.关键字嵌套了
<script>
/* 1.就是跟在她后面的promise执行完毕之后,才会执行下面的代码 */
async function go(){
return "go"
}
var arr = ['html','css','js','vue']
async function test(){
console.log(1);
arr.forEach(async item=>{
var data = await go();
console.log(data)
})
console.log(2)
}
test()
</script>