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)--函数的扩展
只有整理过的学习才是有效的学习.也就是学习之后要使用和整理成文,才是真正的学到了... 最近上班有点忙的关系,于是文章更新会慢些.只有晚上加完班之后,空余时间才能学习整理.因此完成一篇也可能要几个晚上 ...
随机推荐
- [django]form的content-type(mime)
form默认的content-type是 'application/x-www-form-urlencoded' 可以修改为多文档: enctype即为mime类型 <form action=& ...
- HTML5服务器消息推送(java版)
前端代码(html5.html): <html> <meta http-equiv="Content-Type" content="text/html; ...
- mybatis 调用oracle存储过程如何返回out参数值
调试了半天,其实整体用map传入传出也挺简单, 主要是调用存储过程 select标签里平时习惯不写 statementType="CALLABLE",调用没有out参数时也能正常用 ...
- 时间序列模式(ARIMA)---Python实现
时间序列分析的主要目的是根据已有的历史数据对未来进行预测.如餐饮销售预测可以看做是基于时间序列的短期数据预测, 预测的对象时具体菜品的销售量. 1.时间序列算法: 常见的时间序列模型; 2.时序模 ...
- MongoDB--搭建mongodb服务器
此为手动搭建: 可以看到初始化data时所有的数据,和log里已经有日志文件
- 微信支付相关js
import $ from "jquery" /*支付功能开始*/let ip="";let nonceStr;let appId;let mchId;let ...
- cocos2d-x JS 字符串
1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码. strObj.charCodeAt(index) 说明: index将被处理字符的从零开始计数的编号.有效值为0到字符 ...
- python3学习笔记之安装
一.Python安装 1.下载地址: https://www.python.org/downloads/release/python-365/ 2. Linux系统自带Python2.7,如需安装3 ...
- Browsersync结合gulp和nodemon实现express全栈自动刷新
Browsersync能让浏览器实时.快速响应你的文件更改(html.js.css.sass.less等)并自动刷新页面.更重要的是 Browsersync可以同时在PC.平板.手机等设备下进项调试. ...
- spark stream001
package stream.scala import java.io.PrintWriter import java.net.ServerSocket class LoggerSimulation ...