因为js是单线程的,所以一旦代码中有报错,就不会执行下面的了,如下333就未打印

console.log(111)
throw Error(222)
console.log(333)

好像与promise没关系,哈哈。

1.传说中的 setInterval 与 setTimeout
它们是单独的线程执行计数的(因为 JavaScript 引擎是单线程的, 如果处于阻塞线程状态就会影响记计时的准确),

它们并不会阻塞js的执行,如下代码先打印的是222
let timer  = setTimeout(()=>{

console.log(111);

},1000)

console.log(222);

这时候如果我们想等到111打印后再打印222怎么办(实际项目中并不提倡使用延时器),代码如下

new Promise((resolve,reject)=>{

let timer  = setTimeout(()=>{

console.log(111);

resolve();

},1000)

}).then(()=>{

console.log(222);

})

2.异步 http 请求线程

XMLHttpRequest 在连接后是通过浏览器新开一个线程请求,所以它与js也是异步的

所以现在大多数请求的方式,想axios,fetch等其实都已经用promise封装过了(请求成功resolve()失败reject()),比如常遇到的当我获取到请求的数据(走then对应resolve)或请求失败(走catch对应reject)后在进行一系列操作。但是当对多个请求的返回值同时处理的时候就会造成嵌套,这样会使代码显得非常冗长丑陋,难以维护,所以这时候就用到了await,例如:
const init = async ()=>{
  let a = await axios().catch(err=>err);
  let b = await axios().catch(err=>err);
  let c = await axios().catch(err=>err);
  return a&&a.num&&b&&b.num&&c&&c.num&&a+b+c
}

最后附上Promise.all和Promise.race的使用理解

promise的常用情况的更多相关文章

  1. glBlendFunc的几种常用情况

    先Mark一下,后面有时间补上DEMO 1.画航母大灯,手电筒(效果为:透过黑色半透明层可看到下面的背景图,仅圆圈部分) 1)先画圆圈 2)再画背景图(大背景) 大背景设置  glBlendFunc ...

  2. 深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise

    第一部分,Promise 加入 ES6 标准 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6515855.html 未经作者允许不得转载! 从 jquer ...

  3. 彻底理解Promise对象——用es5语法实现一个自己的Promise(上篇)

    本文同步自我的个人博客: http://mly-zju.github.io/ 众所周知javascript语言的一大特色就是异步,这既是它的优点,同时在某些情况下也带来了一些的问题.最大的问题之一,就 ...

  4. 透彻掌握Promise的使用

    Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. 在实际的使用当中,有非常多的应用场景我们不能 ...

  5. 前端基础进阶之Promise

    前言 Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. 在实际的使用当中,有非常多的应用场景我 ...

  6. 透彻掌握Promise的使用,读这篇就够了

    透彻掌握Promise的使用,读这篇就够了 Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. ...

  7. 面试精选之Promise

    常见Promise面试题 我们看一些 Promise 的常见面试问法,由浅至深. 1.了解 Promise 吗? 2.Promise 解决的痛点是什么? 3.Promise 解决的痛点还有其他方法可以 ...

  8. ES6 Promise用法详解

    What is Promise? Promise是一个构造函数,接受一个参数(Function),并且该参数接受两个参数resolve和reject(分别表示异步操作执行成功后的回调函数.执行失败后的 ...

  9. 转【前端基础进阶之Promise】

    前言 Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. 在实际的使用当中,有非常多的应用场景我 ...

随机推荐

  1. encode 和 decode 的使用

    txt = '我是字符串' txt_encode = txt.encode() print(txt) # 我是字符串 print(txt_encode) # b'\xe6\x88\x91\xe6\x9 ...

  2. PHP current() 函数

    实例 输出数组中的当前元素的值: <?php$people = array("Peter", "Joe", "Glenn", &quo ...

  3. three.js 自制骨骼动画(二)

    上一篇说了一下自制骨骼动画,这一篇郭先生使用帧动画让骨骼动画动起来.帧动画是一套比较完善的动画剪辑方法,详细我的api我们就不多说了,网上有很多例子,自行查找学习.在线案例请点击博客原文.话不多说先上 ...

  4. XSSFWorkbook

    支持2007以后的 此类与HSSFWorkbook(支持2007之前) 类似,读取文件时把全部的内容都存放到内存中,关闭输入流后. 内存与硬盘完全是毫无关系的两份数据,所有的操作都是对内存的操作,最后 ...

  5. 【SCOI2005】互不侵犯 题解(状压DP)

    前言:一道状压DP的入门题(可惜我是个DP蒟蒻QAQ) ------------------ 题意简述:求在一个$n*n$的棋盘中放$k$个国王的方案数.注:当在一个格子中放入国王后,以此格为中心的九 ...

  6. Java三大特性与实战

    三大特性: 封装,集成,多态 编程思想 类和对象: 方法的重载 this关键字 static关键字 静态代码块 package import Object 抽象类 接口 lambda表达式 字符串St ...

  7. ebook 电子书项目

    ebook电子书网站使用eclipse开发,开发语言主体是JAVA,使用的是servlet+jsp,前端使用javascript和jQuery,页面布局设计使用的是bootstrap,在这里我记下我开 ...

  8. Codechef June Challenge 2020 Division 1 记录

    目录 The Tom and Jerry Game! Operations on a Tuple The Delicious Cake Convenient Airports Guessing Gam ...

  9. 内存总是不够?HBase&GeoMesa配置优化了解一下

    概况: 生产环境HBase集群内存经常处于高位(90%),而且GC之后也是内存依然处于高位,经分析内存全部由集群的regionserver进程所持有,,经常重启之后,大概3-4天就会保持在高位.由上述 ...

  10. 2020-07-23:开启rdb后,redis的启动流程是怎样的?

    福哥答案2020-07-23: Redis 在完成初始化全局服务器配置,加载配置文件,初始化服务器,开始加载持久化的数据到内存中.如果启用了 appendonly 了,则Redis从 appendfi ...