“ECMAScript”的版本间的差异
来自tomtalk
(→Promise) |
(→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)
是不是觉得赏心悦目,作者第一次看到这样的代码时简直惊为天人,这简直是在写诗好吗?
简单来说
- Promise构造方法接受一个方法作为参数,该方法传入两个参数,resolve和reject。
- resolve用来将Promise对象的状态置为成功,并将异步操作结果value作为参数传给成功回调函数。
- reject用来将Promise对象的状态置为失败,并将异步操作错误error作为参数传给失败回调函数。
- then方法绑定两个回调函数,第一个用来处理Promise成功状态,第二个用来处理Promise失败状态。
基本的 api
Promise.resolve() Promise.reject() Promise.prototype.then() Promise.prototype.catch() Promise.all() // 所有的完成 Promise.race() // 竞速,完成一个即可
Promise 的实现
- q
- bluebird
- co
- when