Promise对象:代表了未来某个将要发生的事件(通常是一个异步操作)
好处:有了promise对象,可以将异步操作以同步的流程表达出来,避免了层层嵌套的回调函数(回调地狱)
1、promise原理
promise有两种状态 成功/失败
resolve函数处理成功的情况
reject函数处理失败的情况
<script>
//1、什么? promise监听器
//2、new关键字实现promise
//3、传递两个参数
// resolve(处理成功) then 触发reslove
// reject(处理失败) catch函数触发reject
//4、这两个函数不会马上执行
// len 和 catch 只会触发一个
var p = new Promise((resolve,reject)=>{
//resolve("success");
reject("error")
})
console.log(p);
// p.then(res=>{
// console.log(res);
// })
p.catch(res=>{
console.log(res);
})
</script>
2 、回调地狱
两段http请求存在高度依赖、嵌套的关系 就会造成回调地狱
<body>
<p id="name"></p>
<img src="" alt="" id="img">
<p id="detail"></p>
<script>
var url = `http://47.108.197.28:3000/top/playlist`;
$.ajax({
url,
success:res=>{
var {name,id,coverImgUrl} = res.playlists[0];
$("#name").html(name);
$("img").attr("src",coverImgUrl)
// 获取歌曲详情相关数据
var url = `http://47.108.197.28:3000/top/playlist?id=${id}`
$.ajax({
url,
success:res=>{
console.log((res.playlists[0].description));
var detail = res.playlists[0].description;
$("#detail").html(detail)
}
})
}
})
</script>
</body>