使用promise的时候会将函数的状态暂停/凝固
1.使用new 关键字实现promise
2.promise有两种状态resolve,reject
3.promise函数不会马上触发,要通过一个then函数去触发
4.then触发的是resolve的状态,catch触发失败的状态
- resolve —>成功
- reject —>失败
5.使用promise之后将http请求由纵向的变为横向的了
6.ajax就是一个promise
<script>
/* 使用promise之后将http请求由纵向的变为横向的了 */
http("top/playlist?cat=华语").then(res=>{
let id = res.playlists[0].id;
return id
}).then(res=>{
http(`playlist/detail?id=${res}`).then(res=>{
let id = res.playlist.trackIds[0].id;
return id
}).then(res=>{
http(`song/url?id=${res}`).then(res=>{
console.log(res)
})
})
})
</script>
<script>
function go(){
return new Promise((resolve,reject)=>{
resolve(1);
reject(2)
})
}
go().then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
</script>
<script>
function http(){
return new Promise((resolve,reject)=>{
$.ajax({
url:"https://music.aityp.com/top/playlist?cat=华语",
type:"get",
success:res=>{
resolve(res)
},
error:err=>{
reject(err)
}
})
})
}
http().then(res=>{
console.log(res.playists)
})
</script>