“ECMAScript”的版本间的差异
来自tomtalk
(创建页面,内容为“==Promise== ===基本的 api=== <source lang="javascript"> Promise.resolve() Promise.reject() Promise.prototype.then() Promise.prototype.catch() Promise.all() /...”) |
(→参考) |
||
(未显示同一用户的21个中间版本) | |||
第1行: | 第1行: | ||
+ | ==ECMAScript 6 入门== | ||
+ | |||
+ | http://es6.ruanyifeng.com | ||
+ | |||
==Promise== | ==Promise== | ||
+ | |||
+ | ===Promise基础介绍=== | ||
+ | |||
+ | Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。 | ||
+ | |||
+ | 如果某些事件不断地反复发生,一般来说,使用 Stream 模式是比部署Promise更好的选择。 | ||
+ | |||
+ | 对于几种常见异步编程方案 | ||
+ | |||
+ | * 回调函数 | ||
+ | * 事件监听 | ||
+ | * 发布/订阅 | ||
+ | * Promise对象 | ||
+ | |||
+ | https://www.jianshu.com/p/459a856c476f | ||
+ | |||
+ | ===Promise与金字塔问题=== | ||
+ | |||
+ | <source lang="javascript"> | ||
+ | getUserAdmin() | ||
+ | .then(getProjects) | ||
+ | .then(getModules) | ||
+ | .then(getInterfaces) | ||
+ | .then(procResult) | ||
+ | </source> | ||
+ | 是不是觉得赏心悦目,作者第一次看到这样的代码时简直惊为天人,这简直是在写诗好吗? | ||
+ | |||
+ | ===简单来说=== | ||
+ | |||
+ | # Promise构造方法接受一个方法作为参数,该方法传入两个参数,resolve和reject。 | ||
+ | # resolve用来将Promise对象的状态置为成功,并将异步操作结果value作为参数传给成功回调函数。 | ||
+ | # reject用来将Promise对象的状态置为失败,并将异步操作错误error作为参数传给失败回调函数。 | ||
+ | # then方法绑定两个回调函数,第一个用来处理Promise成功状态,第二个用来处理Promise失败状态。 | ||
===基本的 api=== | ===基本的 api=== | ||
第8行: | 第45行: | ||
Promise.prototype.then() | Promise.prototype.then() | ||
Promise.prototype.catch() | Promise.prototype.catch() | ||
− | Promise.all() | + | Promise.all() // 所有的完成 |
Promise.race() // 竞速,完成一个即可 | Promise.race() // 竞速,完成一个即可 | ||
</source> | </source> | ||
+ | |||
+ | ===Promise 的实现=== | ||
+ | |||
+ | * q | ||
+ | * bluebird | ||
+ | * co | ||
+ | * when | ||
+ | |||
+ | ===参考=== | ||
+ | |||
+ | * [https://www.jianshu.com/p/459a856c476f Promise详解与实现(Promise/A+规范)] | ||
+ | |||
+ | * [https://juejin.im/entry/596f2ab2f265da6c25190f41?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com 关于promises,你理解了多少?] | ||
+ | |||
+ | * [https://www.cnblogs.com/y896926473/articles/8167612.html 打开Promise的正确姿势 ] | ||
+ | |||
+ | * [https://www.runoob.com/w3cnote/javascript-promise-object.html JavaScript Promise 对象 ] | ||
+ | |||
+ | * [https://www.jianshu.com/p/063f7e490e9a Javascript 中的神器——Promise ] | ||
+ | |||
+ | * [https://www.jianshu.com/p/44182971d555 Promise.prototype.finally ] | ||
+ | |||
+ | ==Node.js Stream(流)== | ||
+ | |||
+ | https://www.runoob.com/nodejs/nodejs-stream.html | ||
+ | |||
+ | Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。 | ||
+ | |||
+ | Node.js,Stream 有四种流类型: | ||
+ | # Readable - 可读操作。 | ||
+ | # Writable - 可写操作。 | ||
+ | # Duplex - 可读可写操作. | ||
+ | # Transform - 操作被写入数据,然后读出结果。 | ||
+ | |||
+ | 所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有: | ||
+ | # data - 当有数据可读时触发。 | ||
+ | # end - 没有更多的数据可读时触发。 | ||
+ | # error - 在接收和写入过程中发生错误时触发。 | ||
+ | # finish - 所有数据已被写入到底层系统时触发。 | ||
+ | |||
+ | |||
+ | ==js的 new image()== | ||
+ | |||
+ | https://blog.csdn.net/hdchangchang/article/details/9036511 | ||
+ | |||
+ | ==Javascript中的async await== | ||
+ | |||
+ | https://www.cnblogs.com/cpselvis/p/6344122.html | ||
+ | |||
+ | async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案。 | ||
+ | |||
+ | ==Javascript异步编程的4种方法== | ||
+ | |||
+ | http://www.ruanyifeng.com/blog/2012/12/asynchronous_javascript.html |
2019年8月13日 (二) 04:17的最后版本
目录
ECMAScript 6 入门
Promise
Promise基础介绍
Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。
如果某些事件不断地反复发生,一般来说,使用 Stream 模式是比部署Promise更好的选择。
对于几种常见异步编程方案
- 回调函数
- 事件监听
- 发布/订阅
- Promise对象
https://www.jianshu.com/p/459a856c476f
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
参考
Node.js Stream(流)
https://www.runoob.com/nodejs/nodejs-stream.html
Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。
Node.js,Stream 有四种流类型:
- Readable - 可读操作。
- Writable - 可写操作。
- Duplex - 可读可写操作.
- Transform - 操作被写入数据,然后读出结果。
所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:
- data - 当有数据可读时触发。
- end - 没有更多的数据可读时触发。
- error - 在接收和写入过程中发生错误时触发。
- finish - 所有数据已被写入到底层系统时触发。
js的 new image()
https://blog.csdn.net/hdchangchang/article/details/9036511
Javascript中的async await
https://www.cnblogs.com/cpselvis/p/6344122.html
async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案。
Javascript异步编程的4种方法
http://www.ruanyifeng.com/blog/2012/12/asynchronous_javascript.html