ES6知识整理(8)--Promise对象



(关于promise,以前并不知道是什么,没这个概念。现在来学习总结下)

promise含义

es6的异步编程解决方案。需要new新对象操作api。

promise对象特点

有3中状态:pending(进行中)、fulfilled(已完成)、rejected(已失效),异步操作才有的状态。

2种状态的改变结果,称为:已定型(resolve):

即可将异步操作变为同步操作,避免层层嵌套回调函数。

promise缺点:

对象创建后会立即执行,中途不可中断。

不设置回调时,将抛出异常,不影响外部执行。

promise用法

使用方法:

resolve作用:pending-->resolved 传参:异步成功的data

reject作用:pending-->rejected 传参:error对象

若a=true;就会进resolve()函数,then中将会进data

若a=false;就会进reject()函数,then中将会进err。

promise执行顺序

对象.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多重异步

创建一个promise的ajax

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

结果:

这个是简洁版本:

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

Network中:


一句:别让自己的努力只是感动了自己。

----公众号:海瑞菌

原文地址:https://www.cnblogs.com/wuhairui/p/9231882.html

时间: 2024-07-30 05:26:30

ES6知识整理(8)--Promise对象的相关文章

ES6中新增的promise对象

所谓 Promise,就是一个对象,用来传递异步操作的消息.它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的 API,可供进一步处理. Promise 对象有以下两个特点. (1)对象的状态不受外界影响.Promise 对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和 Rejected(已失败).只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态.这也是 Promise 这

ES6知识整理(5)--对象的扩展

个人开这个公众号的初心是为了积累知识,因此并没有做什么推广,再说自己也不知道怎么推广,推广之后又能干些什么.已经将近10天没发文章了,虽然每天都加班,但也不会一点时间都没有,有时还是会懒癌发作不想学习.可能是因为还没找的动力源吧,还在寻找中……希望能找到动力,并坚持地积累下去. (文章会同步到博客园,技术类文章还是该让搜索引擎察觉比较好) 属性.方法简介表示法 属性简写: 传统返回法 es6返回法 结果是一样的. 方法简写: 传统写法 es6写法 结果也一样. 属性赋值器与取值器 赋值器sett

ES6知识整理(6)--Symbol函数

(文章会同步到博客园,技术类文章还是该让搜索引擎察觉比较好) symbol是js的第7种数据类型: 7种分别是:undefined.null.boolean(布尔).string(字符串).number(数值).object(对象).symbol. Symbol函数 独一无二的值 Symbol函数返回一个独一无二的值,用typeof来获取数据的类型(symbol). 该函数不能new,且不是对象,不能添加属性,类似于字符串,但不能使用字符串的很多属性与方法(也非字符串)(不能与其他类型运算) 需

ES6的promise对象应该这样用

ES6修补了一位Js修真者诸多的遗憾. 曾几何时,我这个小白从js非阻塞特性的坑中爬出来,当我经历了一些回调丑陋的写法和优化的尝试之后,我深深觉得js对于多线程阻塞式的开发语言而言,可能有着其太明显的缺点,而又无法忽略的是也正因为这一点,node.js处理并行的能力被人看作优点,在我看来,这其实有着些讽刺的意味,就好像踢足球时有的人总夸你腿短,所以频率快下盘稳好控球...好在js从出生以来就有一种独特的特质,就是模仿,对,就是模仿,模仿别人的优点来补足自己,同时保持自己的长处. ES6就是通过P

ES6深入学习记录(二)promise对象相关

1.Promise的含义 Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和强大.ES6将其写进了语言标准,统一了用法,原生提供了promise对象. 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步的操作)的结果.从语法上说,Pormise是一个对象,从它可以获取异步操作的消息.Promise提供统一的API.各种异步操作都可以用同样的方法进行处理. Promise对象的两个特点: 1.对象的状态不受外界影响.Promis

ES6 - promise对象

Promise的设计初衷 我们使用ajax请求数据,得到数据后再对数据进行操作,可是有时候,对得到的数据进行操作的过程中,可能又要用到ajax请求,这时,我们的代码就变成了这样: $.ajax({ success:function(res1){ //...请求B开始,B依赖A返回的数据 $.ajax({ sucess:function(res2){ //...请求C开始,C依赖B返回的数据 $.ajax({ sucess:function(res3){ } }); } }); } }); 这种写

es6中的promise对象

Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) .Resolved(已经完成)和Rejected(已失败) ES6规定,Promise对象是一个构造函数,用来生成Promise实例. var promise=new Promise(function(resove,reject){ if (/* 异步操作成功 */){ resolve(value); } el

ES6学习笔记--promise对象

Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和更强大.它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象. Promise对象有以下两个特点. (1)对象的状态不受外界影响.Promise对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和Rejected(已失败).只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态.这也是Promi

es6 之 promise 对象

异步编程 传统方案:事件 + 回调函数 ES6 的新方案:Promise 对象 Promise 异步操作有 3 种状态 pending: 进行中 resolved: 已完成 rejected: 已失败 Promise 异步操作的状态变化仅限下面两种方式 pending –> resolved pending –> rejected 创建一个 Promise 实例: promise 构造函数接收一个函数作为参数,并且这个函数有两个参数,这两个参数是也是两个函数,不过这两个函数由 JavaScri