关于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和一些交 ...
随机推荐
- 20140425 malloc和new不同 dynamic何时返回0
1.malloc/free和new/delete区别 http://blog.csdn.net/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释 ...
- 网页添加Live2D看板娘
看板娘简而言之就是小店的女服务生,也有“吸引顾客,招揽生意,提高人气”等作用类似品牌形象代言人的含义. 如果想放一个呆萌的看板娘在博客上 js <script type="text/j ...
- Docker学习の更改Docker的目录
一.更改虚拟磁盘的目录 虚拟机的默认存储位置是C:\Users\Administrator\.docker\machine\machines ,后期docke镜像文件会不断增加,为了给系统盘减负,最好 ...
- C++中的指针(*)、引用(&)、const详解(一、定义变量)
一.前言 本人作为一个工作了5年的程序员,程序生涯最初是从c/c++开始的,但是始终不能很熟悉的理解c语言中的指针和c++中的引用,归其原因,一部分自己没有静下心来思考,一部分原因是其自身的复杂性. ...
- 2019-9-11-在-P2P-文件分享应用以文件或文件段为单位的优缺
title author date CreateTime categories 在 P2P 文件分享应用以文件或文件段为单位的优缺 lindexi 2019-09-11 10:23:27 +0800 ...
- 安装keepalived 出现configure: error: Popt libraries is required
keepalived执行./configure --prefix=/usr/local/keepalived时报错:configure: error: Popt libraries is requir ...
- MQTT--笔记
一.MQTT协议基本介绍 1.1.MQTT是什么? MQTT,全称为Message Queue Telemetry Transport.在1999年,由IBM的Andy Stanford-Clark和 ...
- day28 import,from * import *,__name__
Python之路,Day16 = Python基础16 一 module通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py"." ...
- type元类创建类的方法
一.代码 class_name='car' dict_name={} bases=(object,) class_body=''' def __init__(self,name): self.name ...
- 使用ProGuard混淆JAR包
1.在Input/OutPut选项下面,add input 导入需要混淆的jar包2.点击add output,设置混淆后输出jar包的名字和路径.如下图:3.在下面的编辑区右边点击add增加要混淆的 ...