Promise
在ES6中提供了 Promise 对象。
一、概念
- 在MDN里的解释是(我的翻译可能不太好):Promise对象表示在异步操作下的最终完成(或失败)及其结果值。
The Promise
object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.
- 说成人话:Promise是一个对象,用来异步操作,在成功执行完毕或者中途失败的时候执行对应(完成或失败)的操作。
二、Promise
有三个状态
- pending(等待中):初始的状态,既没完成也没失败(也就是代码还在执行中)。
- fulfilled(已完成):表示操作成功完成。
- rejected(失败):表示操作执行失败。
三、特点、优缺点
特点
- Promise的状态不会受到外部的影响。
- 改变状态后不会再发生改变。
优点
- 避免了“回调地狱”
- 可读性好
缺点
- 无法中途取消
- 如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。
- 当处于 Pending 状态时,无法得知目前执行到哪一个阶段(刚刚开始还是即将完成)。
四、基本使用
let promise = new Promise((resolve, reject) => {
reject('参数')
}).then(data => { //成功
console.log(data)
},err => { //失败
console.log('err',err)
}).catch(e => { //捕获异常
console.error(e);
})
resolve的作用:将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
reject的作用:将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
......
参考:
- MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
- https://www.jianshu.com/p/063f7e490e9a
- https://www.jianshu.com/p/1b63a13c2701
版权属于:月琳cc
本文链接:https://kerrinz.com/archives/29.html
作品采用《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议》进行许可,转载请务必注明出处!
- 分类: 默认分类 前端开发 JS
- 标签: javascript ECMA Script ES6 JS