JavaScript异步Promise
1.同步vs异步
同步和异步在程序执行是相反的,同步执行指令是分先后顺序的,就像排队打饭一样,按照顺序执行。异步执行不按照先后到达的顺序,准备好了就可以进行,不会造成进程阻塞的问题。JS是单线程的,如果按照同步执行的顺序执行代码,很容易造成阻塞,影响程序执行的性能。由此可见,异步编程在JS中的地位。
2.异步编程常用场景
- 回调函数
- 事件监听
- Promise
- Generator
- async / awit
在以上场景下,会容易出现回调地狱的现象(多层回调函数互相嵌套),那如何解决回调地狱呢?
3.promise核心
在这一部分主要介绍promise和promise API
- 什么是promise
可以将promise理解为容器,内部保存的是未来某个时刻才会执行完的事件。从语法上看,promise是一个对象,从它可以获得异步操作的消息。
- promise状态机
promise有三个状态:
pedding(待定):初始状态,既没有完成,也没有拒绝
fulfilled(完成):操作成功完成
rejected(拒绝):操作失败
- promise中常用方法
promise.prototype.then( )
为契约添加处理程序的主要方法,最多接收两个参onResolved,onReject分别进入“兑现”和“拒绝”状态时执行。
promise.prototype.catch()
用于给promise添加拒绝处理程序,该方法仅接收一个参数onReject的处理程序。事实上,这个方法就是一个语法糖,调用它相当于调用Promise.prototype.then(null, onRejected)
promise.prototype.finally()
在promise转化为解决或者拒绝状态时都会执行,这个方法可以避免处理和拒绝状态中的冗余代码部分。
Promise.all()
参数:接收一个可迭代对象
此方法用于汇总多个promise异步请求并行操作,当所有结果成功返回时按照请求顺序返回成功;其中如果有一个请求失败则返回失败。
Promise.race()
参数:接收一个可迭代对象
race()返回一个promise,只要参数的promise之中有一个实例率先改变状态,则race方法的返回状态就跟着改变。
Promise.allSetted()
接收一个promise数组,返回一个新的promise
当promise.allSetted全部处理完成后,可以拿到每个promise的状态,而不管其是否处理成功。
JavaScript异步Promise相关推荐
- JavaScript异步函数Promise①——Promise筑基
期约是对尚不存在的一个替身.期约(promise)这个名字最早是由 Daniel Friedman和 David Wise在他们于 1976 年发表的论文"The Impact of App ...
- 【学习笔记】Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程、手写 Promise(二、JavaScript 异步编程)
[学习笔记]Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程.手写 Promise(课前准备) [学习笔记]Part1·JavaScript·深度剖析-函数式编程与 JS 异步 ...
- JavaScript异步与Promise基本用法(resolve与reject)
Promise解决的问题 相信每个前端都遇到过这样一个问题,当一个异步任务的执行需要依赖另一个异步任务的结果时,我们一般会将两个异步任务嵌套起来,这种情况发生一两次还可以忍,但是发生很多次之后,就形成 ...
- JavaScript 异步编程--Generator函数、async、await
JavaScript 异步编程–Generator函数 Generator(生成器)是ES6标准引入的新的数据类型,其最大的特点就是可以交出函数的执行的控制权,即:通过yield关键字标明需要暂停的语 ...
- JavaScript异步调用的发展历程
同步与异步 通常,代码是由上而下依次执行的.如果有多个任务,就必须排队,前一个任务完成,后一个任务才能执行.这种连续的执行模式就叫做同步. a(); b(); c(); 复制代码 上面代码中,a.b. ...
- JavaScript异步精讲,让你更加明白Js的执行流程!
JavaScript异步精讲,让你更加明白Js的执行流程! 问题点 什么是单线程,和异步有什么关系 什么是 event-loop jQuery的Deferred Promise 的基本使用和原理 as ...
- 细说JavaScript异步函数发展历程
2019独角兽企业重金招聘Python工程师标准>>> < The Evolution of Asynchronous JavaScript >外文梳理了JavaScri ...
- 写给初学者的JavaScript异步编程和背后思想
导读: 对于接触JavaScript这门编程语言没有多久的本菜鸡而言,在相当长的一段时间内,我都完全无法理解这门语言中的异步编程,不明白什么叫异步编程以及为什么需要异步编程.为什么顺序执行程序就不行了 ...
- Javascript异步编程之一异步原理
本系列的例子主要针对node.js环境,但浏览器端的原理应该也是类似的. 本人也是Javascript新手,把自己这段时间学习积累的要点总结下来,希望可以对同样在学习Javascript/node.j ...
最新文章
- 导致美国大范围网络瘫痪的Mirai僵尸网络
- webpack 项目使用webpack-dev-server 自动编译 (2)
- Java网络编程实例---------------------------------基本HTTP客户端及服务端多线程
- linux下听MP3
- 如何制作python检查小软件_如何用Python制作整蛊小程序
- [html] 写H5和小程序有什么相同及不同的地方吗?
- 56py无锡官方网站2013最新
- 20220103:力扣第274场周赛(上)
- Docker cpu memory quota使用说明
- 如何改变tabcontrol控件背景色和标签字体和颜色_如何利用标签打印软件将网址信息转成带logo的二维码...
- cisco路由器基本实验之六 CHAP and RIP (Boson NetSim)
- 二十一天学通C语言:C语言中指针排序
- 连文件搜索都不会用,也不自己反省一下?
- Zookeeper 客户端 Curator 使用详解
- c3p0连接池配置说明
- 【第1164期】从前端技术到体验科技
- 机房管理系列之电话交换机
- 实变函数—有限覆盖定理的证明
- Deep Learning(深度学习)资料汇总
- 利用框架效应达成目的