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>
