# es6 Promise是什么?
1. Promise 是一个构造函数 自带三个方法 all、resolve、reject,原型上(prototype)有then、catch等的几个常用的方法。
``` javascript
          var getUserInfo=function(){
            return new Promise((resolve,reject)=>{
              setTimeout(()=>{
                let a={
                  user:"jevons"
                } 
                if((typeof a)=="object"){
                  resolve(a)
                }else{
                  reject("error!")
                }
            },3000)
          }) 
 ```
 2.  getUserInfo函数中return了一个Promise构造函数,其中传入两个参数(resolve,reject),分别表示异步执行成功后的回调函数及异步执行失败的回调函数,
     在上面函数中,我们执行了一个异步操作setTimeout,3秒后执行判断 如果是对象回调resolve,不是回调reject。
     
```javascript
       getUserInfo().then((user)=>{
        console.log(user)//a={user:'jevons'}
      }).catch((error)=>{
        console.log(error)
      })
      
 ```
 3. 我们可以使用then方法进行成功后的回调,catch处理失败后的回调。那么这样写的意义在哪里? 假设我们定义了
     一个getUserInfo的异步请求方法,我们需要异步请求结束后再进行其它操作?我们的常规想法是在异步请求里面在执行其它的操作不就行了,那么问题来了,
     有多层回调该怎么办?Promise的优势在于,可以在then方法中继续写Promise对象并返回,然后继续调用then来进行回调操作。
     
```javascript
        var getUserInfo = function() {
         return new Promise((resolve, reject) => {
           setTimeout(() => {
             let a = {
               user: "jevons1"
             }
             if ((typeof a) == "object") {
               resolve(a)
             } else {
               reject("error1")
             }
       
           }, 3000)
       
         })
       }
       var getUserInfo2 = function() {
         return new Promise((resolve, reject) => {
           setTimeout(() => {
             let a = {
               user: "jevons2"
             }
             if ((typeof a) == "object") {
               resolve(a)
             } else {
               reject("error2")
             }
       
           }, 3000)
       
         })
       }
       getUserInfo().then((user) => {
         console.log(user)//a = {
               user: "jevons1"
             } 3秒后
         return getUserInfo2();
       }).catch((error) => {
         console.log(error)
       }).then((user) => {
         console.log(user)//a = {
               user: "jevons2"
             } 6秒后
       }).catch((error) => {
         console.log(error)
       })
      
 ```
 4. 当然你可以直接返回数据
 ```javascript
        getUserInfo().then((user) => {
         console.log(user)//a = {
               user: "jevons1"
             } 3秒后
       return getUserInfo2();
     }).catch((error) => {
       console.log(error)
     }).then((user) => {
       console.log(user)//a = {
             user: "jevons2"
           } 6秒后
           
        return  "我是直接返回的";
     }).catch((error) => {
       console.log(error)
     }).then((user)=>{
         console.log(user) //我是直接返回的
      })
 ```
     
 5. Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。
```javascript
    Promise
    .all([getUserInfo1(),getUserInfo2()])
    .then(function(results){
        console.log(results);
    })

```

es6 Promise是什么?相关推荐

  1. 十分钟快速了解 ES6 Promise

    转载自 十分钟快速了解 ES6 Promise 什么是Promise Promise最早由社区提出并实现,典型的一些库有Q,when, bluebird等:它们的出现是为了更好地解决JavaScrip ...

  2. 解读ES6 Promise

    详解ES6 Promise异步 文章目录 详解ES6 Promise异步 前言 一.Promise是什么呢... 二.resolve 三.reject 四.then() & catch() 五 ...

  3. 流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!

    谢谢n͛i͛g͛h͛t͛i͛r͛e͛大大指出的关于Promise中catch用的不到位的错误,贴上大大推荐的文章Promise中的菜鸟和高阶错误,文章很详细说明了一些Promise使用中的错误和指导. ...

  4. ES6 — Promise基础用法详解(resolve、reject、then、catch,all,)

    ES6 - Promise基础用法详解 Promise 是一个构造函数,它自身拥有all.reject.resolve这几个眼熟的方法, 原型上有then.catch等同样熟悉的方法. 所以,在开始一 ...

  5. ES6 promise 用法小结

    ES6 promise 用法小结 Js 是一⻔单线程语言,早期解决异步问题,大部分是通过回调函数进行. 比如我们发送 ajax 请求,就是常见的一个异步场景,发送请求后,一段时间服务器给我们响应,然后 ...

  6. Vue进阶(四十五):精解 ES6 Promise 用法

    文章目录 一.前言 二.链式操作用法 三.reject 用法 四.catch 用法 五.all 用法 六.race 用法 七.总结 八.拓展阅读 一.前言 复杂难懂概念先不讲,我们先简单粗暴地把Pro ...

  7. ES6 Promise原理

    ES6 Promise原理 一.Promise是什么 二.为什么会有Promise 1.回调地狱 + 异步同步事件调用顺序带来的双重伤害 2.回调事件的分离 三.Promise的三种状态 1.reso ...

  8. 初探 es6 promise

    javascript是单线程程序,所有代码都是单线程执行.导致javascript的网络请求都是异步执行,异步执行可以通过回调函数实现: setTimeout(callback,1000); func ...

  9. es6 --- Promise封装读取文件操作

    Promise: es6中为了解决回调地狱问题而产生的 Promise的参数 Promise的参数是一个函数. 每个Promise在实例化时,都会立即执行参数里的函数 const p = new Pr ...

最新文章

  1. 玩转 JavaScript 面试:何为函数式编程?
  2. 用了fastapi还需要nginx_专门为API接口开发出现,FastAPI零门槛学习
  3. https下 http的会被阻塞 This request has been blocked; the content must be served over HTTPS.
  4. struts2 跳转类型 result type=chain、dispatcher、redirect
  5. jvm(10)-早期(编译期)优化
  6. C++:50---虚析构函数
  7. Android 物联网 传感器
  8. linux su oracle permission denied,su: /bin/bash: Permission denied带来的疑惑
  9. 腾讯帝国十八年,被它借鉴过的产品都有哪些?
  10. smali-2.2.4.jar baksmali-2.2.4.jar
  11. 基础数据类型转换过程中注意事项
  12. Redis中的Scan命令的使用
  13. 三点弯曲弹性模量怎么计算公式_三点弯曲测试介绍
  14. 余淼杰老师 经济学原理复习笔记(微观)
  15. nginx的日志格式记录真实客户端IP
  16. Data.gov.uk电子政务云,牛津大学NIE金融大数据实验室王宁:数据治理的现状和实践...
  17. 服务器心跳信号,服务器心跳线设置
  18. hanoi塔经典递归算法
  19. node.js实现图片裁剪+获取图片大小+加logo水印
  20. 如何区分“指向const对象的指针”和“const指针”?

热门文章

  1. 重启计算机按哪几个键,电脑键盘哪个键是重启键?
  2. 怎样做一个好的网管?
  3. Spring boot系统拦截处理异常调转404/500页面
  4. libed2k源码导读:(三)网络IO
  5. python编辑程序、根据输入的百分制数_输入一个百分制成绩,利用switch语句编写程序,要求输出成绩等级A B C D,E。90以上为A...
  6. java 替换文件中的字符串
  7. 中国武术高手要在郑州开比武大会?还请了马云做裁判?
  8. 选择排序、冒泡排序、插入排序、快速排序、希尔排序、归并排序、堆排序和希尔排序的java实现比较
  9. 【科研小工具】输入任意坐标即可显示相应脑区详细解剖信息
  10. 非全日制研究生-在职程序员提升的不错选择