Promise()是一个构造函数,通过new调用来创建一个承诺对象,承诺对象主要用于封装异步操作。
一个承诺对象主要有三种状态
承诺发起 pending
承诺成功 resolved
承诺失败 rejected
只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。

1) 获取或者创建一个承诺对象

let promise = new Promise(function(resolve,reject){//异步操作//当异步操作成功的时候执行resolve(),就可以将承诺的状态由//pending -> resolved//当异步操作失败的时候执行reject(),就可以将承诺的状态由//pending -> rejected//resolve()和reject()这两个方法里面可以传参,参数为异步处理的结果,最后会将参数传递给then()等方法。})

当promise实例产生,这个Promise中的回调函数就会执行。通过then方法监听承诺对象状态的改变。

2) 使用承诺对象

Promise.prototype.then(successHandler[,errorHandler])
successHandler 当承诺成功的时候执行
errorHandler 当承诺失败的时候执行
一般不再then方法中添加errorHandler,而是将errorHandler放到catch中

返回值为当前promise实例
Promise.prototype.catch(errorHandler)
errorHandler 当承诺失败的时候执行
Promise.prototype.finally(handler)
handler 不管承诺对象的状态变为什么样子,这个handler函数都会执行

3) 高级特性

1. Promise.all([p1,p2,…])
将多个承诺对象合并为一个承诺对象,返回值为promise

promise .then((result)=>{ //当所有的承诺都resolved的时候该回调函数才会执行 // result 为每个承诺对象返回值组成的一个数组 }) .catch(()=>{ //当有一个承诺对象rejected就会执行这个回调函数 })

2. Promise.race([p1,p2,…])

将多个承诺对象合并为一个承诺对象,返回值为promise

promise .then((result)=>{//只要有一个承诺对象的状态变为resolved,就会执行该回调函数 }) .catch(()=>{//只要有一个承诺对象的状态变为rejected,就会执行该回调函数 })

3.Promise.any([p1,p2,…])
将多个承诺对象合并为一个承诺对象,返回值为promise
Promise.any()跟Promise.race()方法很像,只有一点不同,就是不会因为某个 Promise 变成rejected状态而结束。
4. Promise.resolve(v)
将v转换为承诺对象
可以将一个对象转换为一个承诺对象
5. Promise.reject(v)
返回一个状态为rejected的承诺对象

 在开发中我们用到的axios是基于promise机制的

Promise承诺对象相关推荐

  1. es6的Promise(承诺)

    es6的Promise(承诺) Promise中的所有回调函数,都是异步执行的 //用来解决异步的一些问题 let p = new Promise(function(resolve,refused){ ...

  2. 前端开发最浪漫的技巧------promise(承诺)

    在漫漫历史长河中,许多文人墨客对于承诺这个概念有着很多的见解,也留下了很多脍炙人口的篇章,如"君子一言驷马难追",<诗经·邶风·击鼓>中有着一段"死生契阔,与 ...

  3. 前端js进阶之ES6 Promise(承诺)用法小结笔记、详细解释(resolve,catch,catch)历史最通俗易懂的承诺

    什么是Promise? 英文翻译:承诺! js里: Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all.reject.resolve这几个方法,原型上有then.catch ...

  4. 回归前端学习第9天——JS的Promise承诺

    当我们不知道函数的返回值或返回需要多长时间时,使用Promise是构建异步应用程序的好方法.它们使无需深层嵌套的回调即可更轻松地表达和推理异步操作的序列,并且它们支持类似于同步try...catch语 ...

  5. 重新回头学习归纳ES6的知识点-------promise(承诺)

    概述: 是异步编程的一种解决方案.解决异步回调问题. 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息. 特点: 对象的状态不受外界影响.   Promise对象代表一个异步操作,有 ...

  6. JavaScript--ES6【Promise】对象详解

    文章目录 前言 1.

  7. 详解jQuery.Deferred对象

    一.前言 jQuery1.5之前,如果需要多次Ajax操作,我们一般会使用下面的两种方式: 1).串行调用Ajax $.ajax({ success: function() { $.ajax({ su ...

  8. Promise/Deferred模式

    1. Promise/Deferred模式用来干嘛的??? 先看一个异步调用: $.get('/api', { success: onSuccess, error: onError, complete ...

  9. 通俗系列之同步、异步、阻塞和非阻塞

    前言 在日常的开发中,经常出现同步.异步.阻塞和非阻塞等概念.有些人搞不清楚什么代码是同步,什么代码是异步.有些人说我用异步了啊,为什么效率还是没提高呢?也许你是用异步了,但是可能是异步阻塞了.有些人 ...

最新文章

  1. mysql设置edit_可以使用mysql自己带的config edit
  2. IntelliLight: a Reinforcement Learning Approach for Intelligent Traffic Light Control 论文阅读
  3. linux该专接本还是工作_工作还是考研,我究竟该怎么选?
  4. XStream转换Java对象与XML
  5. linux驱动线程睡眠,linux驱动中断不能睡眠的原因
  6. Spring Data JPA 动态拼接条件的通用设计模式
  7. php yaf框架和icon,php中Yaf框架是什么?
  8. 【报告分享】2021年Z世代“潮力量”洞察报告.pdf(附下载链接)
  9. 技巧:如何从苹果Mac跟踪设备上所有电池的电量?
  10. 如何打造高可伸缩的移动电商架构?
  11. [4G5G专题-45]:物理层-基带子载波数字调制解调(星座图, 相位调制PSK, 正交幅度相位调制QAM)
  12. oAuth2.0店铺订单接口,获取单笔交易的详细信息api接口
  13. MySQL登录命令详解
  14. Unity 小程序开发
  15. 心上莲花:佛教简介(上)
  16. c++内存池作用和优势
  17. 闲鱼怎么用快手做引流,快手怎么找痛点引流
  18. 网络营销中的动态定价策略
  19. BAT编写详细手册 ( 转载 )
  20. Sql server AlwaysOn搭建常见问题

热门文章

  1. CCS DSP28335 asm(“ RPT #8 || NOP“); 报错Target ‘all‘ not remade because of errors.
  2. L1、L2 正则化的一些原理
  3. 永恒的伊甸园—宫崎骏的动画世界
  4. zkbridge, zerion, tabi,
  5. Node.js的事件轮询Event Loop原理解释
  6. 人工智能会取代人类吗
  7. 2021考研 | 假如时光倒流一年,我会如何调整复习
  8. python语句的输出结果_Python 3.x 语句 print(1, 2, 3, sep=':') 的输出结果为 _____
  9. 网站负载均衡与容灾备份方案
  10. 上白泽慧音 - C++