【面试常考】ES6之Promise

1.Promise是什么?

(1)Promise是一个构造函数,用来生成promise实例;

(2)promise实例代表了未来某个将要发生的某个事件(通常是异步操作);

(3)引入promise的好处:在编写代码的时候,异步操作可以以同步操作的流程来表达,避免了层层嵌套的回调函数(‘回调地域’)。

2.promise的3种状态:

(1)pending:初始化状态

(2)rejected:失败状态

(3)fullfilled:成功状态

3.Promise的常用API:

  • promise.all()
    这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败。这个新的promise对象在触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致;如果这个新的promise对象触发了失败状态,它会把iterable里第一个触发失败的promise对象的错误信息作为它的失败错误信息。Promise.all方法常被用于处理多个promise对象的状态集合。

常用用法如下:

let promise1 = new Promise((resolve, reject) => {
...
})
let promise2 = new Promise((resolve, reject) => {
...
})
...
let allPromise = new Promise()
allPromise.all([promise1, promise2, ...]).then((resolve, reject) => {
...
})
  • promise.any()
    接收一个Promise对象的集合,当其中的一个 promise 成功,就返回那个成功的promise的值。
  • promise.race()
    当iterable参数里的任意一个子promise被成功或失败后,父promise马上也会用子promise的成功返回值或失败详情作为参数调用父promise绑定的相应句柄,并返回该promise对象。
  • promise.catch() 处理异常回调
  • promise.then() 处理成功回调

4.应用

// 创建promise实例
let promise = new Promise((resolve,reject) => {
	//初始化promise状态:pending
	
	//这里通常编写Ajax请求或定时器任务代码	,根据异步任务的执行结果去修改promise的状态
	
	// 异步任务执行成功  
	resolve()   // 修改promise对象的状态为fullfilled
	
	// 异步任务执行失败
	reject()   // 修改promise对象的状态为rejected
})

promise
	.then(() => { // 成功回调
	  // 这里通常写Ajax请求成功后,对返回值的处理
	},() => { // 失败回调
	 // 这里写失败后应有的操作
	})

学习参考资料:Promise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值