浅析Promise的then方法
1.关于then
then方法的作用是为Promise对象添加状态改变时的回调函数。
2.then的返回值
then()方法的返回值也是一个promise对象,所以它支持链式写法。但是要注意的是它的返回值是一个新的promise对象,与调用then方法的并不是同一个对象。
那么既然 p2也是一个promise对象,那么,p2的状态(promiseStatus)和值(promiseValue)又由什么决定呢?我们先上结论,随后分别逐一验证。
3.p2的状态和值的确定规则
(1)当p1的状态是pending,则p2的状态也是pending
如前面所示代码
(2)当p1的状态是resolved,then()会去执行f_ok,则p2的状态由f_ok的返回值决定。
(2).1如果f_ok返回值不是promise对象,则p2的状态是resolved,且p2的promiseValue就是 f_ok函数的return值。
(2).2如果f_ok返回值是promise对象,则p2的状态及promiseValue以这个promise对象为准。
(2).3如果f_ok这个函数内部发生了错误(或者是用户主动抛出错误),则p2的状态是 rejected,且p2的promiseValue就是这个错误对象。
(3)如果p1的状态是rejected,then()会去执行f_err,则p2的状态由f_err的返回值决定。
(3).1如果f_err返回值不是promise对象,则p2的状态是resolved,且p2的promiseValue就是 f_err函数的return值。
(3).2如果f_err返回值是一个promise对象,则p2的状态及promiseValue以该promise对象为准。
(3).3如果f_err这个函数内部发生了错误(或者是用户主动抛出错误),则p2的状态是 rejected,且p2的promiseValue就是这个错误对象。
浅析Promise的then方法相关推荐
- 浅析Promise用法
浅析Promise用法 要理解Promise要知道没有Promise的回调地狱 如何插入一段漂亮的代码片 Promise语法与then的用法 所谓Promise,简单说就是一个容器,里面保存着某个未来 ...
- [JavaScript] promise中.then()方法
promise中.then()方法 promise的构造函数是同步执行 promise.then中的函数是异步执行 .then()异步执行 : 当此方法执行完后再执行内部的程序是避免了没有获取到数据 ...
- es6 Promise.prototype.catch()方法
Promise.prototype.catch()方法 Promise.prototype.catch方法是.then(null, rejection)的别名,用于指定发生错误时的回调函数. getJ ...
- es6 Promise.prototype.then()方法
Promise.prototype.then()方法 Promise 实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的.它的作用是为 Promise ...
- 浅析 Promise
前言 刚开始的时候自己对 Promise 的了解不是太深,看到 Promise 就头疼,然后看阮一峰老师的 ES6 标准入门的时候根本看不下去,应该是自己之前的水平太差了,不过最近在看的时候发现基本都 ...
- Promise的使用方法
PS~: Promise是一个构造函数,自己身上有all.reject.resolve等几个方法,原型上有then.catch等几个方法. Promise 对象用于表示一个异步操作的最终状态(完成或失 ...
- 浅析项目工作量估算方法
浅析项目工作量估算方法 马克思主义的认识论和实践观告诉我们,认识源于实践:总结实践经验.深化认识,进而指导实践,通过实践检验.修正认识(理论),螺旋式上升地提高认识. 项目管理作为一个实践性很强的学科 ...
- Uncaught (in promise)的解决方法,可能原因
Uncaught (in promise) 的解决方法,可能原因:仅仅只是一种参考原因 我是因为copy的项目直接修改的,结果一直报错 Uncaught (in promise),检查发现接口请求数据 ...
- Uncaught (in promise) 的解决方法,可能原因
Uncaught (in promise) 的解决方法,可能原因:仅仅只是一种参考原因 我是因为copy的项目直接修改的,结果一直报错 Uncaught (in promise),检查发现接口请求数据 ...
- Promise构造函数的方法1:Promise.resolve()和Promsie.reject()
1.promise.resolve() 它是成功状态的Promsie的一种简写方式. 参数传递:(以下重点掌握一般参数的传递): 1)一般参数和参数为空的情况下,直接返回一个resolved状态的Pr ...
最新文章
- PCI BAR设置过程
- RIS实现系统的远程安装之三使用远程安装
- web项目部署到linux服务器出现的问题
- Bind 配置非递归服务器
- python类class基础
- ubuntu安装sublime
- Windows下配置Redis,并修改密码
- Inject Dll 过程
- 如何搭建克隆系统服务器,FOG Project网络克隆系统安装和搭建
- 完全卸载vs2013 2015
- jsp引进的js 显示404_【梅园大讲堂微课堂】Get超级大招!上海人才引进云申报权威解读来了...
- 嵌入式linux学习笔记(2)
- 爬取mzi.com妹子图片网站(requests库)
- 论文页眉设置 奇偶页页眉均为章序及章标题 论文按章节设置页眉
- 【新书推荐】卡神之路,不过如此
- NOIP 2013 华容道
- DY用辅助软件快速上热门
- [原创]中国象棋翻翻棋,休闲,对战,娱乐,小游戏,jQuery小游戏,下载即用,代码注释全(附源码)
- 解决Redis中Key值带有特殊字符问题
- Jmeter 性能测试的基础了解