Promise 对象

认识Promise对象

语法

new Promise((resolve, reject)=>{resolve();// reject();
}).then(()=>{console.log("resolve!");
}).catch(()=>{console.log("reject!");
})

Promise 对象执行了 resolve 就不执行reject
也就是说,执行了 .then 就不执行 .catch
resolve/reject 类型是 Function

案例1:打印 1-3 每隔500ms

function GetTime() {return new Promise((resolve, reject) => {setTimeout(() => {resolve();}, 500)});}var num = 1;GetTime().then(() => {console.log(num++);return GetTime();
}).then(() => {console.log(num++);return GetTime();
}).then(() => {console.log(num++);return GetTime();
});

案例2 做一个简易的红绿灯 每个2秒切换灯

<!-- HTML 结构 -->
<!doctype html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>简易红绿灯</title>
</head>
<body><div></div><div></div><div></div>
<!--引入一下js-->
</body>
</html>
/*css 样式*/
*{margin: 0;padding: 0;
}
div{width: 50px;height: 50px;border: 1px solid #000000;box-shadow: 0px 0px 4px #cccccc inset;border-radius: 50%;margin-left: 20px;
}
// js
var divs = document.querySelectorAll("div");function GetTime(){return new Promise((resolve, reject)=>{setTimeout(()=>{resolve();},2000) });
}GetTime().then(()=>{divs[0].style.backgroundColor = "red";return GetTime();
}).then(()=>{divs[1].style.backgroundColor = "green";divs[0].style.backgroundColor = "rgba(0,0,0,0)";return GetTime();
}).then(()=>{divs[2].style.backgroundColor = "yellow";divs[1].style.backgroundColor = "rgba(0,0,0,0)";return GetTime();
});

Promise 三种状态

pending 刚进入promise状态

fulfilled 执行了resolve 后

rejected 执行了reject 后

Promise.all()

将所有的Promise对象中resolve 的参数内容合成数组
用于遍历所有的promise对象

Promise.race()

谁快谁先完成

Promise.resolve().then(()+>{});

new promise((resolve, reject)=>{resolve();
}).then(()=>{});

Promise.reject().catch(()=>{});

new promise((resolve, reject)=>{reject();
}).catch(()=>{});

隐士返回一个promise对象

// 这是一个promise对象
loadImage("./img/5-.jpg")
.then((img)=>{console.log("aaa", img);// 相当于returnPromise.resolve();
}).then((img)=>{console.log("bbb", img); // 返回的resolve 无参数,所以打印出bbb undefined
})

async await

语法 :

async function fn(){return "a";
}
var p = fn();
log(a) => 得到的一个结果是 Promise

await 只能等待 promise 执行 resolve 或者 reject 后的内容,并且 await 只能出现在 async 函数中

谢谢观看,如需帮助请留言,

一键三连 支持一下作者

Promise详解,相信你看完我这篇文章简单的Promise使用方式基本上就全会了相关推荐

  1. RabbitMQ详解,用心看完这一篇就够了【重点】

    1.1 消息中间件 消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步.可靠的消息传输的支撑性软件系统--百度百科 1.1.1 应用场景 1.1.1.1 异步处理 场景说明: 用 ...

  2. JS 的 Promise详解

    @[TOC](JS 的 Promise详解)欧诺个鱼 1.概念 ES 6 开始支持 Promise. Promise 对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示.简而言之,就是处理 ...

  3. angular $q promise详解

    前言 通过本文,你大概能清楚angular promise是个啥,$q又是个啥,以及怎么用它.这里咱们先灌输下promise的思想. 下面写的全是废话,一些看着高逼格其实没什么大作用的概念,想知道$q ...

  4. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

  5. 荣耀智慧屏鸿蒙安装第三方软件的方法,华为荣耀智慧屏安装第三方软件的教程,图文详解,一看就会!...

    华为荣耀智慧屏安装第三方软件的教程,图文详解,一看就会! 2020年12月09日 17:42作者:网络编辑:王动 分享 华为荣耀智慧屏安装第三方软件后,你的电视就可以享受无广告版视频.免费的影视资源. ...

  6. CompletableFuture使用详解(全网看这一篇就行)

    Java8 CompletableFuture 用法全解_孙大圣666的博客-CSDN博客_completablefuture ​​​CompletableFuture使用详解(全网看这一篇就行)_代 ...

  7. hadoop作业初始化过程详解(源码分析第三篇)

    (一)概述 我们在上一篇blog已经详细的分析了一个作业从用户输入提交命令到到达JobTracker之前的各个过程.在作业到达JobTracker之后初始化之前,JobTracker会通过submit ...

  8. 详解Linux运维工程师打怪升级篇

    详解 Linux 运维工程师打怪升级篇 积累经验篇 做运维也快4年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师 是从一个呆逼进化为苦逼再成长为牛逼 ...

  9. 详解CSS的盒模型(box model) 及 CSS3新增盒模型计算方式box-sizing

    W3C规范 一般来说,页面中的每一个元素都会形成一个矩形盒子,渲染引擎根据给定的样式确定这个盒子的呈现.通俗的来说,页面的布局就是一个个盒子的排列和摆放.掌握了盒子呈现的本质,布局也就轻而易举. 在 ...

最新文章

  1. 16. Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】
  2. Kaggle经典数据分析项目:泰坦尼克号生存预测!
  3. mysql 导入单个表_MySQL 备份恢复(导入导出)单个 innodb表
  4. 选购计算机五个原则,双十一笔记本电脑推荐
  5. 【数据结构与算法】实验 编写双链表的结点查找和删除算法
  6. 哪有那么多「能力问题」,在你牛到一定程度前,全是「态度问题」
  7. 基本线程同步(五)使用Lock同步代码块
  8. jquery环形3D立体旋转特效
  9. Xcode误删Images.xcassets文件夹的恢复办法(Assets.xcassets)
  10. mysql数据库文件怎么用_mysql数据库文件怎么用
  11. linux 硬盘报错日志,Linux内核I/O系统报错日志与硬盘故障对应关系
  12. java 组织机构代码_JAVA实现社会统一信用代码校验的方法|chu
  13. 新年新玩法,数组“招婿”:老许,你要老婆不要?
  14. Android——自建CA证书,实现https请求
  15. 《管理学》第四章 计划
  16. zynq7000 FSBL 源码分析
  17. yolov5使用教程训练our数据——手把手教你训练预测(以阿里天池比赛为例)
  18. 【TypeScript入门】TypeScript入门篇——对象
  19. MySQL数据库综合练习四
  20. 大话有机器人带队吗_大话西游2为何机器人带队屡禁不止?原来是有利可图!...

热门文章

  1. PySC2星际争霸Ⅱ 强化学习环境搭建
  2. memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存
  3. Django扩展xadmin后台管理
  4. libevent源码分析:eventop
  5. Android日期对话框NumberPicker的用法教程
  6. 每个Xcode开发者应该知道的七个使用技巧
  7. Cocos数据篇[3.4](4) ——plist文件操作
  8. 【读书笔记《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)...
  9. Setup a Windows Server 2012 ×××
  10. python抓取中文网页乱码