Promise
一个 Promise 是一种常用的异步解决方案。Promise通过 then
方法能有效避免回调地狱
问题
#
使用 Promise#
Promise Demo//公共函数const success = (data)=>{ console.log("success",data);}const failure = (data)=>{ console.log("failure",data);}const error = (e)=>{ console.log("error",e);}// 成功promiseconst resolvePromise = new Promise((resolve, reject) => { // dosomething resolve("处理成功结果");})// 处理处理promise 结果resolvePromise.then(success,failure).catch(error);// 失败promiseconst rejectPromise = new Promise((resolve, reject) => { // dosomething reject("处理失败结果");})// 处理处理promise 结果rejectPromise.then(success,failure).catch(error);rejectPromise.then(success).catch(error);// 异常promise const errorPromise = new Promise((resolve, reject) => { // dosomething throw Error();})// 处理异常结果errorPromise.then(success,failure).catch(error);
#
Promise Demo 说明上述demo 分别创建了一个 成功 和 失败的promise。 从上面的demo可以总结以下几点
- 创建promise 接收两个参数
resolve
和reject
- 业务处理成功后执行
resolve(result)
,处理失败后执行reject(message)
- 使用
then
方法执行处理成功(第一个参数)回调或者失败(第二个参数)回调 - 使用
catch
方法执行处理异常结果,如果promise是rejected状态但未指定处理函数(第二个)也会执行catch
#
状态Promise对象的状态不受外界影响,Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败),只有Promise内部操作决定当前是哪一种状态,任何其他操作都无法改变这个状态,且一旦状态改变成(fulfilled,rejected)后就不能变换。
- pending 初始状态
- fulfilled(resolve) 操作成功完成 执行resolve方法改变状态
- rejected 操作失败 执行reject方法改变状态
[图片来源 mdn.mozillademos.org]