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>
