promise概述
- Promise是抽象异步处理对象以及对其进行各种操作的组件,可以将复杂的异步处理轻松的进行模式化。其实就是分模块的去按部就班的去处理一些操作,比如,我们需要执行代码块,然后获取返回值再去拿着这个返回值去进行下面的操作,这个时候我们就是可以去使用promise
- 在js中 代码是单线程的,所以在上述的行为中我们可以通过回调函数去解决上述问题,但是但是回调函数一层层的太多了就有麻烦了,promise就是可以很方便的去解决了这个麻烦 写个列子
function getId(){
return new Promise(function(resolve, reject){
fetch(url).then(res => {
resolve(res)
}).catch( error => {
reject(error)
})
})
}
getId().then(id => {
}).catch(error => {
})
promise的实现
- 首先promise存在三个状态 也是互斥的唯一状态pending(等待中) resolve(解决) reject(拒绝)
过程就是根据你的操作去返回解决或者拒绝,拒绝即结束 接下来的链式结果也即结束,如果请求返回为真也继续执行
let p1 = new Promise(function(resolve, reject){
resolve()
})
p1.then(...).then(...).then(...).catch(...)
- 还就两种情况可以认为是并集和或者执行 如下p1和p2都通过可以继续执行
let p1 = new Promise(...)
let p2 = new Promise(...)
Promise.all([p1,p2]).then(...)
Promise.race([p1,p2]).then(...)