关于promise的用法
promise是一个对象,里面保存着某个未来才会结束的事件,通常是一个异步事件。
promise对象的两个特点:
1.对象的状态不受外界影响:pending(进行中) fulfilled(已成功) rejected(已失败)
只有异步操作的结果可以决定当前状态,其他任何操作都无法改变这个状态
2.一旦状态改变发,就不会再变resolved(已定型),任何时候都可以得到这个结果。
状态改变只有两种可能: pending ==> fulfilled
pending ==> rejected
promise缺点:
1.一旦创建,无法中途取消
2.promise内部的报错,不会反映到外部
3.当处于pending状态时,不知道具体进展到哪一个阶段(刚刚开始还是即将完成)
promise是一个构造函数,用来生成promise实例。
promise构造函数接收函数作为参数,函数参数又接收两个函数作为参数
promise实例后,可以用then方法指定resolved和rejected两个回调函数
Promise.prototype.then() then方法是挂在Promise实例的原型链上,then返回的是一个新promise实例
promise对象改变状态,若为resolved则调用then中的第一个函数,若为rejected则调用第二个函数
const promise = new Promise(function (resolve, reject) {
......
if(){
resolve(value)
}else {
reject(error)
}
})
promise.then(function(value){ }, function(error){ })
Promise.prototype.catch() 可以捕获到promise内部的报错并向外部抛出异常,一般不用then()的第二个回掉函数,推荐使用catch()
Promise.prototype.finally()
不管状态如何,最后都会执行的操作;
finally的回调函数不接受任何参数
Promise.all()将多个 Promise 实例,包装成一个新的 Promise 实例。
每个promise实例都为fulfilled时,新的promise状态才为fulfilled;
只要有一个promise实例为rejected,新的promise状态就为rejected。
Promise.race()将多个 Promise 实例,包装成一个新的 Promise 实例。
Promise.resolve()将原有的对象返回一个新的 Promise 对象,状态为resolved
Promise.reject()将原有的对象返回为一个新的 Promise 实例,该实例的状态为rejected
Promise.try() 不管函数是同步的还是异步的,都用promise来处理函数,函数返回值是一个promise对象。
关于promise的用法的更多相关文章
- 简单谈谈js中Promise的用法
首先先推荐一篇博文:http://blog.csdn.net/jasonzds/article/details/53717501 这篇博文很清晰的说明了Promise的用法,这里来简单总结一下: Pr ...
- 整理一下Promise 的用法
Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事 ...
- JavaScript异步与Promise基本用法(resolve与reject)
Promise解决的问题相信每个前端都遇到过这样一个问题,当一个异步任务的执行需要依赖另一个异步任务的结果时,我们一般会将两个异步任务嵌套起来,这种情况发生一两次还可以忍,但是发生很多次之后,就形成了 ...
- 理解并掌握Promise的用法
前沿: Promise在处理异步操作非常有用.项目中,与后端进行数据请求的时候经常要用到Promise.我们可以用promise + xhr进行ajax的封装.也可以使用基于promise封装的请求 ...
- [js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)
关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下pro ...
- Promise的用法
promise.then().promise.catch().Promise.all()... Promise 构造函数接受一个函数作为参数,该函数的2个参数分别是 resolve 和 reject. ...
- ES6关于Promise的用法
Promise 对象用于一个异步操作的最终完成(或失败)及其结果值的表示.简单点说,它就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作. 它的一般表示形 ...
- ES6的promise函数用法讲解
总结:Promise函数的出现极大的解决了Js中的异步调用代码逻辑编写太过复杂的问题,Promise对象让异步调用函数的流程显得更加的优雅,也更容易编写. 举例: 1. 异步调用: 假设现在我的一个页 ...
- 入门Promise的用法
new Promise(function(resolve,reject){ resolve(); //数据处理完成 reject(); //数据处理出错 }).then(function A(){ / ...
- ES6关于Promise的用法详解
Node的产生,大大推动了Javascript这门语言在服务端的发展,使得前端人员可以以很低的门槛转向后端开发. 当然,这并不代表迸发成了全栈.全栈的技能很集中,绝不仅仅是前端会写一些HTML和一些交 ...
随机推荐
- 推荐5本纯Java技术书,你看过几本?
51小长假了,大家应该对它又爱又痛,爱的是终于可以到处浪了,痛的是没钱只能穷游,而且还到处都是人,结果变成了堵高速.去看人头.去蒸饺子,真是受罪啊.. 所以,对于小长假的痛,我相信还是有一部分人会选择 ...
- Java & 架构硬核福利,速度上车!
极客时间福利时间! 最近,栈长每周都会给大家带来极客时间的专栏拼团优惠,给错过优惠的朋友一个再次优惠上车的机会. <从0开始学架构>和<Java核心技术36讲>,这两个专栏很火 ...
- Activiti学习笔记目录
1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...
- java 3des加密问题记录
3des加密有不同的加密模式和填充模式,这个网上很多不多说了,只要保证加解密的时候加密模式和填充模式保持一致就可以了 首先对于密钥的生成,java中有2种方式: 1.第一种,采用ECB模式和不填充模式 ...
- 前端常用的库和实用技术之JavaScript多线程
多线程概念: 多线程是指从软件或硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在 同一时间执行多于一个线程,进而提升整理处理性能.具有这种能力的系统包括对称多处理机,多核心 ...
- sql(7)
EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据. EXCEPT 子句/运算符用于将两个 SELECT 语句结合在一起,并返回第一个 SELECT 语句的结果中那些不存在于第二个 S ...
- C++相对路径和绝对路径
学习备忘 转自:http://www.cnblogs.com/vranger/p/3820783.html 电脑硬盘E盘下,建文件夹“test”,"test"下建立子文件夹“fil ...
- python2与python3编码(练习)
#_author:来童星#date:2019/12/9import jsons='star'a=s.encode('utf8')print(s,type(s))# star <class 'st ...
- Windows 设置IP解决方案
{ super + e / windows + e Mouse Right play down network link }
- windows cmd command
////////////////// ===>windows + r //gpedit.msc 用户组策略 ///////////////// ===>cmd //ping www.bai ...