promise的个人理解
程序员文章站
2022-03-05 07:56:35
...
promise概述
- Promise是抽象异步处理对象以及对其进行各种操作的组件,可以将复杂的异步处理轻松的进行模式化。其实就是分模块的去按部就班的去处理一些操作,比如,我们需要执行代码块,然后获取返回值再去拿着这个返回值去进行下面的操作,这个时候我们就是可以去使用promise
- 在js中 代码是单线程的,所以在上述的行为中我们可以通过回调函数去解决上述问题,但是但是回调函数一层层的太多了就有麻烦了,promise就是可以很方便的去解决了这个麻烦 写个列子
// 我们的需求是获取id然后去根据id去操作其他
function getId(){
return new Promise(function(resolve, reject){
fetch(url).then(res => {
resolve(res)
}).catch( error => {
reject(error)
})
})
}
getId().then(id => {
//这个适合就是我们拿到id的时候
}).catch(error => {
//返回错误id的时候执行
})
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(...)
上一篇: 使用新版 Windows Terminal 打开批处理脚本的方法
下一篇: Promise用法