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的用法的更多相关文章

  1. 简单谈谈js中Promise的用法

    首先先推荐一篇博文:http://blog.csdn.net/jasonzds/article/details/53717501 这篇博文很清晰的说明了Promise的用法,这里来简单总结一下: Pr ...

  2. 整理一下Promise 的用法

    Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事 ...

  3. JavaScript异步与Promise基本用法(resolve与reject)

    Promise解决的问题相信每个前端都遇到过这样一个问题,当一个异步任务的执行需要依赖另一个异步任务的结果时,我们一般会将两个异步任务嵌套起来,这种情况发生一两次还可以忍,但是发生很多次之后,就形成了 ...

  4. 理解并掌握Promise的用法

    前沿:  Promise在处理异步操作非常有用.项目中,与后端进行数据请求的时候经常要用到Promise.我们可以用promise + xhr进行ajax的封装.也可以使用基于promise封装的请求 ...

  5. [js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)

    关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下pro ...

  6. Promise的用法

    promise.then().promise.catch().Promise.all()... Promise 构造函数接受一个函数作为参数,该函数的2个参数分别是 resolve 和 reject. ...

  7. ES6关于Promise的用法

    Promise 对象用于一个异步操作的最终完成(或失败)及其结果值的表示.简单点说,它就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作. 它的一般表示形 ...

  8. ES6的promise函数用法讲解

    总结:Promise函数的出现极大的解决了Js中的异步调用代码逻辑编写太过复杂的问题,Promise对象让异步调用函数的流程显得更加的优雅,也更容易编写. 举例: 1. 异步调用: 假设现在我的一个页 ...

  9. 入门Promise的用法

    new Promise(function(resolve,reject){ resolve(); //数据处理完成 reject(); //数据处理出错 }).then(function A(){ / ...

  10. ES6关于Promise的用法详解

    Node的产生,大大推动了Javascript这门语言在服务端的发展,使得前端人员可以以很低的门槛转向后端开发. 当然,这并不代表迸发成了全栈.全栈的技能很集中,绝不仅仅是前端会写一些HTML和一些交 ...

随机推荐

  1. lasso数学解释

    lasso:是L1正则化(绝对值) 注:坐标下降法即前向逐步线性回归 lasso算法:常用于特征选择 最小角算法,由于时间有限没有去好好研究(其实是有点复杂,尴尬)

  2. UVA Ananagrams /// map set

    https://vjudge.net/problem/UVA-156 题目大意: 输入文本,找出所有满足条件的单词——该单词不能通过字母重排而得到输入的文本中的另外一个单词. 在判断是否满足条件时,字 ...

  3. 三层(3-tier architecture)基础

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lhc2207221755/article/details/24802053     之前看过非常多关 ...

  4. jdbc_mysql----interset

  5. error LNK2019: 无法解析的外部符号 __imp_recv,该符号在函数 evthread_notify_drain_default 中被引用

    在Windows系统中使用libevent时,编译报错:error LNK2019: 无法解析的外部符号 __imp_recv,该符号在函数 evthread_notify_drain_default ...

  6. 廖雪峰Java16函数式编程-2Stream-1Stream简介

    1. Stream Java8引入全新的Stream API 位于java.util.stream包 1.1 Stream API不同于java.io的InputStream/OutputStream ...

  7. Spring Boot 成长之路(一) 快速上手

    1.创建工程 利用IntelliJ IDEA新建一个Spring Boot项目的Web工程 2.查看初始化的spring boot项目 工程建好之后会出现如下的目录结构: 值得注意的第一件事是,整个项 ...

  8. CSS-基本语法/引用/文本设置/选择器/css3属性

    CSS-基本语法/引用/文本设置 css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设 ...

  9. 分析post与json

    寻找登录的post地址 在form表单中寻找action对应的url地址 post的数据是input标签中name的值作为键,真正的用户名密码作为值的字典,post的url地址就是action对应的u ...

  10. Block的Retain Cycle的解决方法

    一个使用Block语法的实例变量,在引用另一个实例变量的时候,经常会引起retain cycle.这个问题在使ASIHTTPRequest的block语法的时候会时不时的碰到.这个问题困扰了我这个小白 ...