javascript是单线程程序,所有代码都是单线程执行。导致javascript的网络请求都是异步执行,异步执行可以通过回调函数实现:
setTimeout(callback,1000);
function callback(){console.log('----callback')     //1秒钟才能打印,回调函数处理异步执行的
};
但是es6推出一种新的方法new Promise()==>对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。
new Promise( function(resolve, reject) {...});resolve 表示成功的状态 reject 表示失败的状态
Promise的方法有:
1.Promise.all([]).then(e=>e).catch(e=>e) ==>数组中所有传入状态完成才执行
2.Promise.race([]).then(e=>e).catch(e=>e) ==>数组中又一个传入的状态完成就执行
3.Promise.resolve({}) ==>返回一个成功的状态
4.Promise.reject({}) ==>返回一个失败的状态
let a=new Promise((resolve,reject)=>{resolve(1)//或reject()
});
a.then(e=>{   // resolve 返回的结果console.log(e)  //1
}).catch(e=>{ //reject 返回的结果console.log(e)
});
如果我们有一个需求是需要所有3个接口的数据都返回了然后再进行操作,那么promise.all就可以解决,比如下面例子:
let b1=new Promise((resolve,reject)=>{resolve('b1')
});
let b2=new Promise((resolve,reject)=>{resolve('b2')
})
let b3=new Promise((resolve,reject)=>{resolve('b3')
});
let b4=Promise.resolve('成功')  //调用一个成功的状态
Promise.all([b1,b2,b3,b4]).then(value=>{console.log(value)   //  'b1', 'b2', 'b3' ]
})
let b5=Promise.reject('失败')  //调用一个失败的状态
Promise.all([b1,b5]).then(value=>{console.log(value)
}).catch(e=>{console.log(e,'------失败')  //失败
})
如果我们有一个需求是3个接口中只要有一个完成了接口请求即执行,Promise.race([])
var promise1 = new Promise(function(resolve, reject) {setTimeout(resolve, 50, 'one');
});
var promise2 = new Promise(function(resolve, reject) {setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then(value=>{    console.log(value);  //one
}).catch(e=>{console.log(e)
})
//promise1或者promise2谁先执行完就执行就获取先执行的值

每天进步一点,希望大家喜欢,也希望喜欢的朋友点个赞或收藏,后续继续更新...

初探 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是什么?

    # es6 Promise是什么? 1. Promise 是一个构造函数 自带三个方法 all.resolve.reject,原型上(prototype)有then.catch等的几个常用的方法. ` ...

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

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

  6. ES6 promise 用法小结

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

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

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

  8. ES6 Promise原理

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

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

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

最新文章

  1. 行代码实现数据集可视化、分析与比较
  2. 趣链 BitXHub跨链平台 (3)跨链交易流程
  3. 【MM】新建移动类型(Movement Type)
  4. 分支机构L2L *** 到总部再PAT通过专线到合作伙伴(SVTI建立***)
  5. python创建配置文件_如何写python的配置文件
  6. CakePHP之Model
  7. boost::log模块实现loging到 syslog 服务器的示例
  8. java io复用_学习Java编程-IO复用
  9. C++的优秀特性2:inline 函数
  10. ionic3实战之—Radio传值
  11. 【CodeForces - 1020B】Badge(模拟,图,环)
  12. nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题
  13. bzoj2705Longge的问题
  14. JS-function-BOM(window,history,location,navigator,screen)
  15. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
  16. 请勿在计算机室吃带果壳的食品英语,双语者如何在两种语言间切换?
  17. linux查看网卡带宽命令,Linux查看网卡带宽的两个命令
  18. Excel常用10个函数
  19. 使用xshell连接串口方法
  20. JavaScript写入文件到本地

热门文章

  1. python窗体设置italic_007萝卜头学python:Python GUI 之Tkinter
  2. 【Linux】【服务器】 CentOS7下安装MySQL详细过程步骤
  3. 个人博客系统的设计与实现_一个 Go 开发的快速、简洁、美观、前后端分离的个人博客系统...
  4. 在Windows10上安装ROS并测试
  5. Halcon知识:如何用mfc显示halcon读入图象
  6. 剑指offer java 博客_Java--剑指offer(10)
  7. python树莓派设备_Python+树莓派制作IoT(物联网)门控设备
  8. python pip安装提示Consider using the `--user` option or check the permissions.
  9. matlab 单元,MATLAB单元阵列
  10. leetcode -day8 Copy List with Random Pointer Single Number I II