一:理解两种类型的回调函数

 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处理前端异步事件相关推荐

  1. java 异步事件_处理异步事件的三种方式

    在网站开发中,异步事件是项目必然需要处理的一个环节,也因为前端框架的兴起,通过框架实现的 SPA 已经是快速建构网站的标配了,一部获取数据也就成了不可或缺的一环:本文来就讲一讲 JavaScript ...

  2. c++ 异步下获取线程执行结果_前端异步编程的那些事

    啊 一.异步编程的运行机制 我们学习Javascript语言的时候就知道它的执行环境是"单线程"的. 所谓"单线程",就是指一次只能处理一个任务.如果有多个任务 ...

  3. 前端异步解决方案大全(2021版)

    JavaScript是一门单线程语言,即一次只能完成一个任务,若有多个任务要执行,则必须排队按照队列来执行(前一个任务完成,再执行下一个任务). 这种模式执行简单,但随着日后的需求,事务,请求增多,这 ...

  4. 前端异步请求解决方案

    前端异步请求解决方案 前言 一.回调函数 二.promise对象 三.async await 前言 JavaScript是一门单线程的语言,同一时间节点只能做一个任务,默认是从前往后一次执行. 同步任 ...

  5. 什么是Promise?前端开发人员会使用Promise简直就是如虎添翼

    一.什么是Promise 目录 一.什么是Promise 1.Promise到底是做什么的呢? 2.什么是回调地狱. 二.Promise基本语法 三.什么情况下需要使用Promise 四.Promis ...

  6. Spring5源码解析-Spring中的异步事件

    上一篇 Spring框架中的事件和监听器并未对Spring框架中的异步事件涉及太多,所以本篇是对其一个补充. 同步事件有一个主要缺点:它们在所调用线程的本地执行(也就是将所调用线程看成主线程的话,就是 ...

  7. Spring5源码 - 12 Spring事件监听机制_异步事件监听应用及源码解析

    文章目录 Pre 实现原理 应用 配置类 Event事件 事件监听 EventListener 发布事件 publishEvent 源码解析 (反推) Spring默认的事件广播器 SimpleApp ...

  8. java 异步事件_Java编程入门——异步事件:轮询与中断

    CPU几乎把所有的时间都花费在从内存获取指令并运行它们的过程中.然而,CPU和主存仅仅只是计算机硬件系统中众多组件的其中两个.一个完整的系统还包含其他的设备,比如: 硬盘或者固态硬盘,用来存储程序和数 ...

  9. AliOS Things异步事件框架Yloop

    摘要: Yloop概要 Yloop是AliOS Things的异步事件框架.Yloop借鉴了,libiuv及嵌入式业界常见的event loop,综合考虑使用复杂性,性能,及footprint,实现了 ...

最新文章

  1. Python 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable
  2. 即将毕业的你,做好当一个社会人的准备了吗?
  3. 4.编程打印一个二维数组中所有元素的和,并打印最大值,最小值(以及它们所在的行号和列号)
  4. 解决NGINX PHP No input file specified
  5. 相机模型和双目立体匹配
  6. Flink 端到端一致性
  7. 190518每日一句
  8. 建立项目工作节奏之华为时间管理大法
  9. 颜值即正义,这个蓝色爱心不好看吗
  10. 为什么有阿里云ACP认证好找工作呢?
  11. 初窥 fastlane 一键打包上传蒲公英平台和App Store
  12. 微信小程序调用导航,uniapp打开本地导航软件
  13. 《软技能,代码之外的生存指南》--教你如何当一名程序员
  14. 计算机网络封装和解封的概念,以太网数据封装与解封过程
  15. 科技有意思丨iPhone8新添AR功能?!你的肾还保得住吗
  16. 机载火控计算机测试系统的设计
  17. 狂神说 SpringBoot 笔记
  18. CAD 连接两个相交线
  19. Java实现ChatRoom
  20. 洛谷(luogu)如何创建题目?

热门文章

  1. ES中的RollUp概念
  2. Tensorflow 入门教程
  3. 使用ThreadPoolExecutor产生的 OutOfMemoryError: unable to create new native thread 错误
  4. docker OOM问题排查思路
  5. python将某个列表按元素值分成多个子列表
  6. php-redis 下载地址
  7. Win7下Solr4.10.1和TomCat8的安装
  8. POJ 3133 Manhattan Wiring (插头DP)
  9. 消息映射的服务器的设计与实现
  10. 计算bom的准确用量