“ECMAScript”的版本间的差异

来自tomtalk
跳转至: 导航搜索
(创建页面,内容为“==Promise== ===基本的 api=== <source lang="javascript"> Promise.resolve() Promise.reject() Promise.prototype.then() Promise.prototype.catch() Promise.all() /...”)
 
Tom讨论 | 贡献
参考
 
(未显示同一用户的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 入门

http://es6.ruanyifeng.com

Promise

Promise基础介绍

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

如果某些事件不断地反复发生,一般来说,使用 Stream 模式是比部署Promise更好的选择。

对于几种常见异步编程方案

  • 回调函数
  • 事件监听
  • 发布/订阅
  • Promise对象

https://www.jianshu.com/p/459a856c476f

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

参考

Node.js Stream(流)

https://www.runoob.com/nodejs/nodejs-stream.html

Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。

Node.js,Stream 有四种流类型:

  1. Readable - 可读操作。
  2. Writable - 可写操作。
  3. Duplex - 可读可写操作.
  4. Transform - 操作被写入数据,然后读出结果。

所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:

  1. data - 当有数据可读时触发。
  2. end - 没有更多的数据可读时触发。
  3. error - 在接收和写入过程中发生错误时触发。
  4. 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