Promise处理前端异步事件

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

	1,同步回调函数:立即执行,完全执行完才结束,不会放入回调队列中。例如:数组遍历相关的回调函数/Promise的excutor函数
	2,异步回调函数:不会立即执行,会放入回调队列中将来在执行。例如:定时器回调/Ajax回调/Promise成功或者失败的回调。(异步回调在实际中使用的比较多)

二:错误的几种类型

	1,Error:所有错误类型的父类
	2,ReferenceError:引用的变量不存在
	3,TypeError:数据类型不正确的错误
	4,RangeError:数据值不在其允许的范围内
	5,SystaxError:语法错误

三:处理错误的几种方法

	错误是一种对象,有两个属性,message:错误信息;stack:函数调用栈记录的信息
	1,捕获错误:try   catch
	2,抛出错误:throw error

四:理解Promise

	Promise是js异步处理的一种新的解决方案(之前是通过异步回调函数,处理异步事件)
	Promise是什么:
				从语法角度:Promise是一个构造函数
				从功能角度:promise对象用来封装一个异步操作并可以获取其中的结果
	promise对象的状态:pending(初始状态),resolved/fulfilled(回调成功),rejected(回调失败)
	promise对象状态值改变的几种可能
				pending——》resolved
				pending——》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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值