Promise处理前端异步事件
一:理解两种类型的回调函数
1,同步回调函数:立即执行,完全执行完才结束,不会放入回调队列中。例如:数组遍历相关的回调函数/Promise的excutor函数2,异步回调函数:不会立即执行,会放入回调队列中将来在执行。例如:定时器回调/Ajax回调/Promise成功或者失败的回调。(异步回调在实际中使用的比较多)
二:错误的几种类型
1,Error:所有错误类型的父类2,ReferenceError:引用的变量不存在3,TypeError:数据类型不正确的错误4,RangeError:数据值不在其允许的范围内5,SystaxError:语法错误
三:处理错误的几种方法
错误是一种对象,有两个属性,message:错误信息;stack:函数调用栈记录的信息1,捕获错误:try catch2,抛出错误:throw error
四:理解Promise
Promise是js异步处理的一种新的解决方案(之前是通过异步回调函数,处理异步事件)Promise是什么:从语法角度:Promise是一个构造函数从功能角度:promise对象用来封装一个异步操作并可以获取其中的结果promise对象的状态:pending(初始状态),resolved/fulfilled(回调成功),rejected(回调失败)promise对象状态值改变的几种可能pending——》resolvedpending——》rejected注意:promise对象的状态只能改变一次,无论状态变为成功还是失败,都会有数据结果,成功的结果一般称为value,失败称为reason
五:Promise工作流程图:
一个简单的Promise实例:
/*通过Promise构造函数,来创建一个Promise对象,
Promise函数接收一个函数作为参数(这是一个同步的函数参数)
函数参数又接收两个参数函数,resolve函数用来改变promise对象的状态为成功
reject函数用来改变promise对象的状态为失败
*/
const p=new Promise((resolve,reject)=>{setTimeout(()=>{const time=Date.now();if(time%2==0){//将状态设置为成功resolve('成功的数据'+time)}else{//将状态设置为失败reject('失败的数据'+time)}},1000)
})
/*
Promise处理异步事件,就是将异步事件和异步处理结果分开
异步事件被封装在promise对象中,异步事件处理结果,无非就三种状态,一种没处理对应
promise中的pending,事件处理结果成功对应promise中的resolved,事件处理结果失败对应promise中的rejected
随后处理结果,就是通过promise的then方法,更具promise对象的状态调用不同的异步回调函数
而且then方法执行完异步回调函数后会返回一个新的promise对象,这样promise链就形成了*/
p.then(value=>{console.log('回调成功'+value)
},reason=>{console.log('失败回调'+reason)
})
六:使用Promise处理异步事件的好处
普通的通过回调函数处理异步事件:回调函数必须在异步任务定义是就指定其回调函数promise处理异步:启动异步任务》返回一个promise对象》通过then方法给其绑定异步的回调函数(一个promise对象可以通过调用多个then方法来调用多个回调函数)回调地狱问题:回调函数嵌套调用,外部函数异步执行结果是嵌套的回调执行的条件(就是一个异步回调函数处理结束了,但是又嵌套了一个异步回调),回调地狱问题不利于阅读,不便于处理异常通过promise链式调用处理地狱问题优化的解决方案 通过async await处理
七:Promise函数对象的API
Promise处理前端异步事件相关推荐
- java 异步事件_处理异步事件的三种方式
在网站开发中,异步事件是项目必然需要处理的一个环节,也因为前端框架的兴起,通过框架实现的 SPA 已经是快速建构网站的标配了,一部获取数据也就成了不可或缺的一环:本文来就讲一讲 JavaScript ...
- c++ 异步下获取线程执行结果_前端异步编程的那些事
啊 一.异步编程的运行机制 我们学习Javascript语言的时候就知道它的执行环境是"单线程"的. 所谓"单线程",就是指一次只能处理一个任务.如果有多个任务 ...
- 前端异步解决方案大全(2021版)
JavaScript是一门单线程语言,即一次只能完成一个任务,若有多个任务要执行,则必须排队按照队列来执行(前一个任务完成,再执行下一个任务). 这种模式执行简单,但随着日后的需求,事务,请求增多,这 ...
- 前端异步请求解决方案
前端异步请求解决方案 前言 一.回调函数 二.promise对象 三.async await 前言 JavaScript是一门单线程的语言,同一时间节点只能做一个任务,默认是从前往后一次执行. 同步任 ...
- 什么是Promise?前端开发人员会使用Promise简直就是如虎添翼
一.什么是Promise 目录 一.什么是Promise 1.Promise到底是做什么的呢? 2.什么是回调地狱. 二.Promise基本语法 三.什么情况下需要使用Promise 四.Promis ...
- Spring5源码解析-Spring中的异步事件
上一篇 Spring框架中的事件和监听器并未对Spring框架中的异步事件涉及太多,所以本篇是对其一个补充. 同步事件有一个主要缺点:它们在所调用线程的本地执行(也就是将所调用线程看成主线程的话,就是 ...
- Spring5源码 - 12 Spring事件监听机制_异步事件监听应用及源码解析
文章目录 Pre 实现原理 应用 配置类 Event事件 事件监听 EventListener 发布事件 publishEvent 源码解析 (反推) Spring默认的事件广播器 SimpleApp ...
- java 异步事件_Java编程入门——异步事件:轮询与中断
CPU几乎把所有的时间都花费在从内存获取指令并运行它们的过程中.然而,CPU和主存仅仅只是计算机硬件系统中众多组件的其中两个.一个完整的系统还包含其他的设备,比如: 硬盘或者固态硬盘,用来存储程序和数 ...
- AliOS Things异步事件框架Yloop
摘要: Yloop概要 Yloop是AliOS Things的异步事件框架.Yloop借鉴了,libiuv及嵌入式业界常见的event loop,综合考虑使用复杂性,性能,及footprint,实现了 ...
最新文章
- Python 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable
- 即将毕业的你,做好当一个社会人的准备了吗?
- 4.编程打印一个二维数组中所有元素的和,并打印最大值,最小值(以及它们所在的行号和列号)
- 解决NGINX PHP No input file specified
- 相机模型和双目立体匹配
- Flink 端到端一致性
- 190518每日一句
- 建立项目工作节奏之华为时间管理大法
- 颜值即正义,这个蓝色爱心不好看吗
- 为什么有阿里云ACP认证好找工作呢?
- 初窥 fastlane 一键打包上传蒲公英平台和App Store
- 微信小程序调用导航,uniapp打开本地导航软件
- 《软技能,代码之外的生存指南》--教你如何当一名程序员
- 计算机网络封装和解封的概念,以太网数据封装与解封过程
- 科技有意思丨iPhone8新添AR功能?!你的肾还保得住吗
- 机载火控计算机测试系统的设计
- 狂神说 SpringBoot 笔记
- CAD 连接两个相交线
- Java实现ChatRoom
- 洛谷(luogu)如何创建题目?