Skip to main content

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可以总结以下几点

  1. 创建promise 接收两个参数 resolvereject
  2. 业务处理成功后执行 resolve(result),处理失败后执行 reject(message)
  3. 使用 then 方法执行处理成功(第一个参数)回调或者失败(第二个参数)回调
  4. 使用 catch 方法执行处理异常结果,如果promise是rejected状态但未指定处理函数(第二个)也会执行catch

状态#

Promise对象的状态不受外界影响,Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败),只有Promise内部操作决定当前是哪一种状态,任何其他操作都无法改变这个状态,且一旦状态改变成(fulfilled,rejected)后就不能变换。

  1. pending 初始状态
  2. fulfilled(resolve) 操作成功完成 执行resolve方法改变状态
  3. rejected 操作失败 执行reject方法改变状态

[图片来源 mdn.mozillademos.org]