理解promise及适用场景
来源:互联网 发布:国史大纲 版本 知乎 编辑:程序博客网 时间:2024/06/05 16:17
异步的概念:
参考:http://mp.weixin.qq.com/s?__biz=MjM5MTA1MjAxMQ==&mid=2651222422&idx=1&sn=8c059af21a4cd7c9041ab719459451d5&
mpshare=1&scene=23&srcid=0511fvGzKWdEjPUi9hxyAHIn#rd
http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html
promise陷阱:http://www.jianshu.com/p/9e4026614fbe
promise与异步:http://ouvens.github.io/frontend-javascript/2016/03/04/promise-and-asyncjs.html
实现异步的方法
实现异步的方法目前有,自定义嵌套,Promise、generator、Defferd,还有ES7的async(其实是generator的封装),不同场景可以选择不同的方式去实现
promise的定义
先给下Promise学术点的描述:
promise代表一个异步操作的执行返回状态,这个执行返回状态在promise对象创建时未必已知。它允许你为异步操作的成功或失败指定处理方法。
promise的用途
Promise可以用来避免异步操作函数里的嵌套回调(callback hell)问题,因为解决异步最直接的方法是回调嵌套,将后一个的操作放在前一个操作的异步回调里,但如果操作多了,就会有很多层的嵌套。
promise的知识点
1.Promise实例的then方法作用是为Promise实例添加状态改变时的回调函数。then方法的第一个参数是resolved状态的回调函数,第二个参数是rejected状态的回调函数。
2.then方法返回的是一个新的Promise实例,(注意:不是原来那个Promise实例)。因此可以采用链式写法。
3.Promise对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。即错误总会被下一个catch语句捕获。
4.一般,不要在then 方法中定义rejected状态的回调函数(即then的第二个参数),而应总是使用catch方法。因为catch更接近同步写法。
5.catch方法返回的还是一个Promise对象,可接着调用then方法。
6.在 JavaScript 函数中,只有 return / yield / throw 会中断函数的执行,其他的都无法阻止其运行到结束的,这也是所谓的Run-to-completion 特性。
promise的优点
1. Promise 的一大优点,就是结果不变性,一旦 Promise 的值确定为fulfilled 或者 rejected 后,无论过多久,获取到的 Promise 对象的值都是一样的。
对不变性的理解:
像 resolve/reject 不过只是一个回调而已,而所谓的不变性只是说,当遇到第一个 resolve/reject 后,便根据其结果给此 Promise 打上了一个 tag,并且不能更改,而后面的该干啥继续干,不干本 Promise 的事儿了。
使用promise注意事项
1.始终在Promise 构造器中书写逻辑的话,即使出现了意外的输入,也能绝大部分情况下返回一个Rejected 的 Promise
2.在 Promise 构造器中,除非你明确知道使用 throw 的正确姿势,否则都请使用 reject。
3。能够兼容 Promise 和 Callback 确实是件很棒的事情,用第三方代码前请尽量理解其原理,短小的话完全可以自己写一个。Promise虽好,可不要乱用哦,实时牢记它会吞没错误的风险。
- 理解promise及适用场景
- zookeeper基本原理及适用场景
- zookeeper基本原理及适用场景
- zookeeper基本原理及适用场景
- zookeeper基本原理及适用场景
- [NodeJS] 优缺点及适用场景讨论
- 读书笔记--MapReduce 适用场景 及 常见应用
- [NodeJS] 优缺点及适用场景讨论
- [NodeJS] 优缺点及适用场景讨论
- NodeJS优缺点及适用场景讨论
- NodeJS优缺点及适用场景讨论
- NodeJS优缺点及适用场景讨论
- NodeJS优缺点及适用场景讨论
- node.js优缺点及适用场景讨论
- NodeJS优缺点及适用场景讨论
- [NodeJS] 优缺点及适用场景讨论
- NoSQL类型、适用场景及使用公司
- NodeJS优缺点及适用场景讨论
- 清除浮动的CSS设置
- SQL SERVER数据类型与C#数据类型对照表
- matplotlib演示最小二乘法拟合过程
- poj 2109 Power of Cryptography
- 斯坦福CS20SI:基于Tensorflow的深度学习研究课程笔记,Lecture note3:TensorFlow上的线性回归和逻辑回归
- 理解promise及适用场景
- JSON与XML的区别比较
- 数据库基础第四天
- 目标检测的图像特征提取之(一)HOG特征
- Anaconda使用总结
- 目标检测的图像特征提取之(二)LBP特征
- InnoDB存储引擎
- 【DOM】(2)对于dom树中的增删改查---查
- 目标检测的图像特征提取之(三)Haar特征