Promise对象是解决ES5中回调地狱的问题
使用Promise 可以使代码的可读性增强。
使用new Promise的时候需要注意 new Promise后里面的代码将被直接执行。New的时候就会被执行
Promise对象有两个参数resolve和reject
resolve是将Promise的状态改为成功
而reject是将Promise的状态改为失败
如何声明一个Promise对象函数?
function loadScript(src) { return new Promise((resolve, reject) => { let script = document.createElement('script') script.src = src script.onload = () => resolve(src) script.onerror = err => reject(err) document.head.append(script) }) }Promise中的整合
可能读者没有理解什么是整合的意思。
就好像我需要从A接口取一些数据 然后从B接口取一些数据,最后将A和B的数据整合成一个数组。
我们可以使用串联的方式解决该问题
但是Promise给我提供了一个很好的方法。这个是Promise的原型方法
大家只需要这样就可以了
Promise.all([promise接口1,promise接口2]).then(values => { console.log(values) // 在这里会输出一个数组。它就是promise接口1和promis接口2 的集合 })写到这里很多工作过的同学一定用过CDN,在使用CDN的时候考虑到CDN的不可靠性会准备备用的CDN
这个时候的需求时如果主CDN无法使用 就使用备用CDN
同样可以使用串联的思路
但是Promise在这里也给我们提供了一个很好的方法
CDN1和CDN2哪一个接口请求速度快就使用哪一个。
Promise.race([promise接口1,Promise接口2]).then(value => { console.log(vlaue) // 这里会返回最先请求到的数据,也就是最先改变状态的Promise而不会再去管后请求到的数据 })
评论一下?