ES6知识整理(8)--Promise对象
(关于promise,以前并不知道是什么,没这个概念。现在来学习总结下)
es6的异步编程解决方案。需要new新对象操作api。
有3中状态:pending(进行中)、fulfilled(已完成)、rejected(已失效),异步操作才有的状态。
2种状态的改变结果,称为:已定型(resolve):

即可将异步操作变为同步操作,避免层层嵌套回调函数。
promise缺点:
对象创建后会立即执行,中途不可中断。
不设置回调时,将抛出异常,不影响外部执行。
使用方法:

resolve作用:pending-->resolved 传参:异步成功的data
reject作用:pending-->rejected 传参:error对象

若a=true;就会进resolve()函数,then中将会进data
若a=false;就会进reject()函数,then中将会进err。
对象.then()

log输出顺序:1 3 2
new之后直接.then()

log输出顺序:2 1
直接return resolve(),就只执行回调,后面的不再执行。

因为前面return了 所以只会输出1
异步加载图片:

若图片路径存在,则输出value为img对象
若图片路径不存在或错误,则输出err为Error 加载失败
异步操作ajax:
json数据:

getJson函数带上参数url,可以返回该json数据。
若获取到数据,返回数据;
若访问不到数据,进入then的error,打印:
Error at XMLHttpRequest.xhr.onreadystatechange

调用getJson(url),then中成功则进data,失败则进err。
创建一个promise的ajax

创建多重异步(2个then,第2个getJson使用return):

结果:

这个是简洁版本:

结果是一样的(两重异步):

Network中:

一句:别让自己的努力只是感动了自己。
----公众号:海瑞菌

ES6知识整理(8)--Promise对象的更多相关文章
- ES6知识整理(4)--数组的扩展
最近工作比较忙,基本每天都会加班到很晚.处理一些客户端兼容问题以及提升用户体验的优化.也将近一周没更文了,现在继续es6的学习总结. 上篇回顾 ES6知识整理(三)--函数的扩展 扩展运算符 形式是3 ...
- ES6知识整理(9)--class的基本语法
(总结完知识点,出去滑板刷街) promise的catch 上一节promise中漏了一个知识点: promise对象可以使用catch来避免每个then中都加error判断,让错误时都进到catch ...
- ES6系列_14之promise对象的简单使用
1.产生原因 在前端开发中,最常见的的就是"回调",我相信很多人对于这个"回调"可谓是印象深刻呢.究其原因是因为层层回调会造成所谓的“回调地狱 (callbac ...
- ES6 - 基础学习(8): Promise 对象
概述 Promise是异步编程的一种解决方案,比传统的解决方案(多层嵌套回调.回调函数和事件)更强大也更合理.从语法上说,Promise是一个对象,从它可以获取异步操作的消息,Promise 还提供了 ...
- ES6知识整理(5)--对象的扩展
个人开这个公众号的初心是为了积累知识,因此并没有做什么推广,再说自己也不知道怎么推广,推广之后又能干些什么.已经将近10天没发文章了,虽然每天都加班,但也不会一点时间都没有,有时还是会懒癌发作不想学习 ...
- ES6知识整理(1)--let和const命令
最近准备在业余空闲时间里一边学习ES6,一边整理相关知识.只有整理过的学习才是有效的学习.也就是学习之后要使用和整理成文,才是正在的学到了... 那么现在开始 LINK START!(首先是第一讲,前 ...
- ES6知识整理(2)--变量的解构赋值
最近准备在业余空闲时间里一边学习ES6,一边整理相关知识.只有整理过的学习才是有效的学习.也就是学习之后要使用和整理成文,才是真正的学到了... 上一篇是一个试水,现在接上. 变量提升 看了下朋友回复 ...
- ES6知识整理(10)--class的继承
(这是es6的第10篇文章.说真的这样的总结之后虽然直观了许多,但是消耗的时间有点长,或许是知识比较复杂的原因吧) 类的继承 有个A类,B类继承A类,那B类实例就可以使用A类实例的所以属性和方法.不包 ...
- ES6知识整理(3)--函数的扩展
只有整理过的学习才是有效的学习.也就是学习之后要使用和整理成文,才是真正的学到了... 最近上班有点忙的关系,于是文章更新会慢些.只有晚上加完班之后,空余时间才能学习整理.因此完成一篇也可能要几个晚上 ...
随机推荐
- 微信公众号支付开发当前URL未注册解决办法
微信公众号支付,则需要现在微信支付商户后台,预先添加支付网址才可以.否则会出现“当前URL未注册”字样的报错. 方法/步骤 1. 报错实例如下,手机端微信调起微信支付框时弹出 2. 首先需要登录微信支 ...
- [py]super调用父类的方法---面向对象
super()用于调用父类方法 http://www.runoob.com/python/python-func-super.html super() 函数是用于调用父类(超类)的一个方法. clas ...
- Python socketserver模块解析
参考:https://blog.csdn.net/qq_33733970/article/details/79153938 1.功能简介 socketserver模块是对socket模块的再封装,用于 ...
- ES代替DB建模后的维护流程架构
- shell实现SSH自动登陆【转】
前言 公司开发使用docker,每次登陆自己开发机总要输入 ssh user_name@ip_string,然后再确认输入password,手快了还经常会输错.作为一个懒人,肯定要找一个取巧的方式,查 ...
- setUp和tearDown及setUpClass和tearDownClass的用法及区别
① setup():每个测试函数运行前运行 ② teardown():每个测试函数运行完后执行 ③ setUpClass():必须使用@classmethod 装饰器,所有test运行前运行一次 ④ ...
- 理解tcp顺序释放操作和tcp的半关闭
Shutdown的调用 在关闭socket的时候,可以有两种方式closesocket和shutdown,这两个函数的区别在什么地方呢? #include <sys/socket. ...
- java outterLoop跳出多重循环用法以及详解
List<CommResultMsg> listresult=new ArrayList<CommResultMsg>(); outterLoop :for (int i = ...
- c#之如何转换文本文件编码格式为utf-8
如代码: string content = File.ReadAllText(path, Encoding.Default); File.WriteAllText(path, content, Enc ...
- Unity shader学习之Alpha Blend
通过 ShaderLab 的 AlphaBlend 能够实现真正的半透明效果. 使用 AlphaBlend 时,需要关闭深度写入 ZWrite Off,但得非常小心物体的渲染顺序, RenderQue ...