回忆一下ES5中的怎么使用异步方法


// es5中的异步回调let ajax = function(callback){console.log('执行')    // 执行setTimeout(() => {callback&&callback.call();}, 1000)};ajax(function(){console.log('hello') // 1s后打印hello});

使用ES6的Promise的方法:


let ajax = function(){console.log('执行2'); // 执行2return new Promise((resolve,reject)=>{setTimeout(() => {resolve()  // 执行下一步操作, reject   // 中断当前的操作},5000)})}ajax().then(()=>{console.log('promise','timeout2')   // 5s后打印   promise timeout2})

连续使用Promise对象:


let ajax = function(){console.log('执行3');return new Promise((resolve,reject)=>{setTimeout(() => {resolve();},5000)})}ajax().then(function(){return new Promise(function(resolve,reject){setTimeout(() => {resolve()}, 2000)})}).then(function(){console.log('timeouk3')  // 7s后打印timeouk3})

Promise捕获错误的catch( )

// catch 捕获错误let ajax = function(num){console.log('执行4');return new Promise(function(resolve,reject){if(num>=5){resolve();}else{throw new Error('传入的数字比5小')}})}ajax(4).then(function(){console.log('log',4);  }).catch(function(err){console.log('catch',err);  // catch Error: 传入的数字比5小})

Promise的两种高级用法

1.Promise.all( )


function loadImg(src){return new Promise((resolve,reject)=>{let img = document.createElement('img');img.src = src;img.onload = function(){resolve(img);}img.onerror = function(err){reject(err);  }})}// 对所有的图片进行遍历function showImgs(imgs){  console.log(imgs);imgs.forEach(function(img){document.body.appendChild(img);})}// promise.all()的用法Promise.all([loadImg('http://yanshi.sucaihuo.com/modals/0/23/small.jpg'),loadImg('http://yanshi.sucaihuo.com/modals/0/20/small.jpg'),loadImg('http://yanshi.sucaihuo.com/modals/0/2/small.jpg')]).then(showImgs)/**解析: 把多个promise实例当做一个promise实例,当所有的promise实例发生变化后新的promise实例才会发生变化*/ 

2.Promise.race( )


// Promise 先加载 有一个图片加载完就先添加到页面function loadImg(src){return new Promise((resolve,reject)=>{let img = document.createElement('img');img.src = src;img.onload = function(){resolve(img);}img.onerror = function(err){reject(err);  }})}function showImgs(img){let p = document.createElement('p');p.appendChild(img);document.body.appendChild(p);}// promise.race()的用法 只要有一个网速好的加载完,其他的就不加载了Promise.race([loadImg('http://yanshi.sucaihuo.com/modals/0/23/small.jpg'),loadImg('http://yanshi.sucaihuo.com/modals/0/20/small.jpg'),loadImg('http://yanshi.sucaihuo.com/modals/0/2/small.jpg')]).then(showImgs)}

ES6中的异步对象Promise相关推荐

  1. js基础知识:es6中,当对象中的key名称为一个变量时,需要用`[]`括起来

    es6中,当对象中的key名称为一个变量时,需要用[]括起来

  2. javascript中内置对象promise知多少

    const p1 = new Promise(()=>{}); const p2 = p1.then(function f_ok(){}, function f_err(){}); // p2也 ...

  3. ES6中Map与对象、数组,JSON之间的相互转换

    Map转为数组 const map = new Map(); map.set(1,"foo").set(2,"bar").set(3,"baz&quo ...

  4. ES6中的Promise使用方法与总结

    在javascript中,代码是单线程执行的,对于一些比较耗时的IO操作,都是通过异步回调函数来实现的. 但是这样会存在一个问题,当下一个的操作需要上一个操作的结果时,我们只能把代码嵌到上一个操作的回 ...

  5. 深入浅出JS—15 ES6中Proxy及Reflect的使用

    在一些前端框架中,常常需要监听数据变化,页面进行响应.为了监听对象的变化,需要对对象的操作进行捕获.本文着重介绍ES6中Proxy代理对象的使用,以及涉及到的映射对象Reflect使用 1. Prox ...

  6. 【JavaScript 教程】ES6 中的 Promise对象 详解

    [JavaScript 教程]ES6 中的 Promise对象 详解 1.Promise对象含义 promise是异步编程的一种解决方法. 所谓promise,简单说是一个容器,里面保存着某个未来才会 ...

  7. 支付宝异步回调返回success_深入解决异步编程Promise对象的学习

    1.什么是Promise 简单来说Promise是异步编程的一种解决方案 Promise是ES6中的特性. 什么是异步操作? 网络请求中,对端服务器处理需要时间,信息传递过程需要时间,不像我们本地调用 ...

  8. 前端综合学习笔记---异步、ES6/7、Module、Promise同步 vs 异步

    个人bolg地址 同步 vs 异步 先看下面的 demo,根据程序阅读起来表达的意思,应该是先打印100,1秒钟之后打印200,最后打印300.但是实际运行根本不是那么回事 console.log(1 ...

  9. Promise使用详解2(ES6中的Promise)

    2015年6月,  ES2015 (即  ECMAScript 6 . ES6 ) 正式发布.其中  Promise  被列为正式规范,成为  ES6  中最重要的特性之一. 1,then()方法 简 ...

最新文章

  1. Sharepoint 2010 页面设计确实方便
  2. Oracle数据库用户失效对象,Oracle数据库对象失效解决
  3. python3支持中文_彻底颓了—— Vim Python 3 接口不支持中文 - Jacky Liu's Blog
  4. android布局中使用include及需注意点
  5. QLive EULA
  6. Serverless 应用开发的 7 个经验心得
  7. IDC发布2018中国AI服务器销量报告:浪潮领头,交通应用增幅最猛
  8. 【毕业设计】JAVA网络通信系统的研究与开发(论文+源代码+开题报告)
  9. 俊杰隐藏文件程序源码分享 C#
  10. 深度学习应用:入门篇(下)
  11. AAtitit 项目管理 提升开发效率的项目流程方法模型 哑铃型  橄榄型 直板型titi
  12. 荣耀路由2 虚拟服务器,荣耀路由器2恢复出厂设置的两种方法
  13. 韩信点兵python源代码_Python实现“韩信点兵”
  14. 创宇区块链|Inverse Finance 安全事件分析
  15. Hdu 3929 Big Coefficients (容斥原理 二项式性质)
  16. “创宇ADS”获公安部颁发《计算机信息系统安全专用产品销售许可证》!
  17. (Arduino)ESP8266通过局域网通信控制LED
  18. 和小朋友分享一些Scratch学习的心得一
  19. ICML 2020 | GCNII:简单和深度图卷积网络
  20. 【文档】字体 / Font

热门文章

  1. php云人才系统调用,PHP云人才系统3.0正式发布
  2. 计算机主键盘的布局,计算机键盘的布局,结构和布置
  3. lnmp ubuntu mysql装不上_ubuntu1.8安装lnmp失败
  4. jsonb 查询_如何使用IN运算符查询jsonb数组
  5. 不同层级的Java开发者的不同行为
  6. python【力扣LeetCode算法题库】19-删除链表的倒数第N个节点
  7. 【django轻量级框架】HTML上传文件拦截到本地
  8. 【Deep Learning笔记】常用的激活函数
  9. python开发教程视频教程_金牌大神讲师Alex带你学Python 153节课带你轻松学透Python开发视频教程_IT教程网...
  10. w7怎么查看电脑配置_学室内设计,对电脑配置有何要求?不懂戳这!