promise

promise是ES6引进的异步编程解决方案,是一个构造函数,可以实例化对象,可以解决回调地狱的问题。
首先我们看一下promise的实例化对象是什么

 let P = new Promise(function(){});//new一个promise传入一个函数console.log(P);

打印结果:

可以看到promise是一个对象 有自己的原型,有then,catch等方法

promise的参数

promise的参数是一个函数 这个函数有两个参数 分别是reject(失败的回调)和resolve(成功的回调)。

resolve的用法:

    let P = new Promise(function(resolve ,reject ){/*函数体执行完之后调用resolve*/resolve('成功')});P.then((res)=>{console.log(res);})

打印结果:

在函数体执行完之后调用resolve(),结果会走then()方法

reject的用法

    let P = new Promise(function(resolve ,reject ){/*还是执行完之后调用reject*/reject('错误')});P.catch(function(err){console.log(err);})

打印结果:

在函数体执行完之后调用reject(),结果会走catch()方法

promise的then方法使用:

浏览器编译遇见then()方法调用promise实例,并在函数调用resolve()之后编译then()中的函数体

    var num = 1;let P = new Promise(function (resolve, reject) {setTimeout(function () {num = 2;resolve();}, 2000);});P.then(function (res) {console.log(num); // 浏览器编译遇见then()方法会走promise函数体 在函数体调用resolve()之后再编译then()的函数体 两秒之后num重新赋值为2 此时为2});console.log(num); // 直接打印num 此时为1

promise的catch方法使用:

用法和then()一样
在浏览器编译遇到reject()时调用。

promise的all方法使用:

    let P = new Promise(function (resolve, reject) {setTimeout(function () {resolve();}, 2000);});let P2 = new Promise(function (resolve, reject) {setTimeout(function () {resolve();}, 5000);});Promise.all([P, P2]).then(function () {alert(111);// 5秒之后弹出 });

all()方法传入一个数组,这个数组的元素是多个promise实例,在所有实例执行完之后执行then()方法。

js中promise的用法相关推荐

  1. JS中Promise函数then的奥秘探究

    JS中Promise函数then的奥秘探究 Promise概述 Promise对象是CommonJS工作组提出的一种规范,目的是为异步操作提供统一接口. 那么,什么是Promises? 首先,它是一个 ...

  2. JS中typeof的用法

    转载自  JS中typeof的用法 js是一门弱语言,它在声明变量时无需确定变量的类型,js在运行时会自动判断.那么如何判断一个变量的类型呢,js提供了typeof运算符,用来检测一个变量的类型. 1 ...

  3. php function函数用法,js的function函数是什么?js中function的用法

    本篇文章给大家带来的内容是关于js的function函数是什么?js中function的用法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Function与函数 Function是 ...

  4. append和appendTo的区别以及js中的appendChild用法

    append和appendTo的区别以及js中的appendChild用法 很多像我一样接触JS没多久的小白对append和appendTo的区别以及js中的appendChild用法都会有所模糊,下 ...

  5. js中indexOf的用法详解

    js中indexOf的用法详解 String.IndexOf 方法 (Char, [startIndex], [count]) 报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检 ...

  6. js控制页面滚动到指定位置,js中scrollIntoView()的用法

    js中scrillIntoView()的用法--页面滚动到指定位置 最近遇到一个问题,在一个页面上,点击某个按钮时,滚动到页面的某一位置. 如图: 如果是我写的话,我可能会先获取滚动到的元素,然后获取 ...

  7. js中return的用法

    js中return的用法 今天看到一篇文章,介绍的是js中return的用法,感触很深.(类似于JAVA return) 在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默 ...

  8. innerHTML连接指定HTML文件,js中innerhtml的用法

    js中innerHTML与innerText的用法与区别 js中innerHTML的用法: innerHTML可获取或设置指定元素标签内的 html内容,从该元素标签的起始位置到终止位置的全部内容(包 ...

  9. JS中reduce的用法

    JS中reduce的用法 前言 语法 举例 reduce的应用 总结 前言 reduce() 方法对数组中的每个元素执行一个由您提供的reduce函数(升序执行),将其结果汇总为单个返回值.reduc ...

最新文章

  1. 水木-搜索引擎技术版
  2. 如何让搜索引擎抓取AJAX内容
  3. CAN收发器SN65HVD230,实际应用案例分析
  4. java 课后习题 二维坐标距离 三角形判断等
  5. Better Explained 以通俗易懂的语言阐释数学
  6. s3cmd常用命令和使用技巧
  7. 基于蒙特卡洛的大规模电动汽车充电行为分析(Matlab代码实现)
  8. cad lisp 背景遮罩_单行文字转多行文字带背景遮罩
  9. A卡福利 : AMD Fluid Motion Video补帧教程,让你的视频从24帧补到60帧(144)
  10. exynos 4412 电源管理芯片PMIC 的配置及使用方法
  11. [vue3.x]实战问题--Extraneous non-props attributes
  12. 【PHP】关于系统性能追踪工具molten
  13. 常用函数式接口及Stream流
  14. 超过1M的网络动图添加到微信表情包
  15. MD5 标准算法详解
  16. indesign选中不了图片删除_图片神器XnView教程、方法和技巧汇总
  17. 连目标管理都不会,还谈什么目标?
  18. linux 串口 lsr 0xc9,linux 串口驱动(三)
  19. 新年优惠不断档,邀请好友还能获得腾讯视频会员及Q币!
  20. 任何收获都不是偶然 日复一日的付出和努力 一点一滴的进步,

热门文章

  1. android bitmap设置透明度,Android 设置图片 Bitmap任意透明度
  2. android音乐播放器实现,Android实现简单音乐播放器(MediaPlayer)
  3. “Z医生,我明天的手术,成功率有多高?”
  4. 外国程序员整理的Java资料大全
  5. 什么是SWFObject,如何使用!
  6. 布袋除尘器过滤风速多少_袋式除尘器过滤风速一般多大
  7. Mysql tinyint(1)与tinyint(4)的区别
  8. MobPush创建推送
  9. java通过jstack命令查询日志深入理解
  10. Spring BlazeDS Integration 的工作原理