ES6:一、Promise语法

Promise语法

    new Promise((resolve,reject)  =>  {...})

Promise对象表示一个异步操作的最终状态(完成或失败)。

为什么需要Promise

Promise是为了解决异步函数多重嵌套的问题(回调地狱)。

什么是回调地狱

参数


一个回调函数,其中包含了两个参数,resolve,reject。
当回调函数内部正常执行之后,回调用resolve函数,不过,一旦发生error,则返回值会被忽略,执行reject函数。

描述

一个Promise对象有下面几种状态:

  • pending:初始化状态
  • fulfilled:回调执行成功
  • rejected:回调执行中出现异常

方法

    Promise.resolve(val)

Promise正常执行完成后调用,返回一个状态值val,决定Promise对象。

  • 返回一个Promise对象,直接返回该对象
  • 返回带有then方法的对象,返回Promise对象最终状态由then执行
  • 返回的值val为空,则返回一个状态为fulfilled的Promise对象
  • 一般情况,当你不知道一个值是否为Promise对象,使用Promise.resolve(val)进行包装
Promise.reject(val)

返回一个状态为resolve的Promise对象

Promise.all([])

返回一个状态为失败的Promise对象,传入一个可以迭代的对象,当iterable全部为fulfilled时,返回一个resolve状态

  • 传入一个空的可迭代对象,则返回resolve状态的Promise对象
  • 传入的参数不包含任何Promise,则返回一个resolve状态的Promise对象
  • 只要有一个可迭代对象返回reject,则返回状态为reject的Promise对象
  • 其他情况下,返回一个pending(处理中)的Promise对象
Promise.race(iterable)

返回一个Promise对象,一旦迭代器对象中的某个Promise返回resolve或reject,则返回的Promise对象会立刻改为同一个状态。

Promise.catch(reject)

处理返回状态为reject的Promise对象

Promise.finally(resolve|reject)

无论返回的Promise对象状态为resolve或reject,都将会执行finally函数

参考链接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise

猜你喜欢

转载自blog.csdn.net/u013243347/article/details/81042033
今日推荐