“ECMAScript”的版本间的差异

来自tomtalk
跳转至: 导航搜索
Promise
Tom讨论 | 贡献
Promise基础介绍
第4行: 第4行:
  
 
Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。
 
Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。
 +
 +
===Promise与金字塔问题===
 +
 +
<source lang="javascript">
 +
getUserAdmin()
 +
    .then(getProjects)
 +
    .then(getModules)
 +
    .then(getInterfaces)
 +
    .then(procResult)
 +
</source>
 +
是不是觉得赏心悦目,作者第一次看到这样的代码时简直惊为天人,这简直是在写诗好吗?
  
 
===简单来说===
 
===简单来说===

2019年8月12日 (一) 13:00的版本

Promise

Promise基础介绍

Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。

Promise与金字塔问题

getUserAdmin()
    .then(getProjects)
    .then(getModules)
    .then(getInterfaces)
    .then(procResult)

是不是觉得赏心悦目,作者第一次看到这样的代码时简直惊为天人,这简直是在写诗好吗?

简单来说

  1. Promise构造方法接受一个方法作为参数,该方法传入两个参数,resolve和reject。
  2. resolve用来将Promise对象的状态置为成功,并将异步操作结果value作为参数传给成功回调函数。
  3. reject用来将Promise对象的状态置为失败,并将异步操作错误error作为参数传给失败回调函数。
  4. then方法绑定两个回调函数,第一个用来处理Promise成功状态,第二个用来处理Promise失败状态。

基本的 api

Promise.resolve()
Promise.reject()
Promise.prototype.then()
Promise.prototype.catch()
Promise.all()           // 所有的完成
Promise.race()       // 竞速,完成一个即可

Promise 的实现

  • q
  • bluebird
  • co
  • when