Promise

本文深入探讨了异步操作的挑战,如回调地狱、错误处理难题,并介绍了Promise如何解决这些问题,包括其状态变化、队列特性及错误捕获机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、异步操作:

1、$ .ajax(url, {success: function(){}})是等请求成功后调用回调
2、$(function(){})是等页面加载完后调用
3、node异步操作比较多,高并发无阻塞
异步操作回调多的问题:

  1. 嵌套层次很深,难以维护
  2. 无法正常return 和throw错误
  3. 无法正常检索堆栈信息
  4. 多个回调之间难以建立联系
二、promise
1、先初始化一个实例,初始时传入一个函数参数作为执行器。执行器的参数分别是:resolve – 数据处理完成时调用, reject – 数据处理失败时调用.这两个函数调用完后会改变promise实例的状态。状态改变之后会调用then函数里得方法,then方法也有两个函数作为对应的参数,若promise执行成功,会执行then的第一个参数函数,若是promise执行失败,则执行第二个函数。
new Promise(function(resolve,reject){
	resolve();//异步数据处理成功后执行
	reject();//异步数据处理失败后执行
}).then(function A(){
//成功,做下一步
},
function B(){
//失败,做相应处理
})
2、Promise三个状态

pending: 初始状态
fulfilled: 操作成功
rejected: 操作失败

3、多个then函数的时候,每个then都会产生一个新的promise,已经完成的promise再使用then依然可以获得值,这是promise的队列特性
4、promise里的then可以返回新的promise或者其他值,如果没有return 新的promise实例,则会执行下一个 then.如果没有返回任何值,则会立刻执行下一个then.
5、错误处理

方法1 :使用reject并在then 的第二个参数里执行错误处理
方法2: throw new Error并且使用catch执行错误处理,推荐第二个,一般在队列最后都加上catch。

5、promise.all()

接受数组作为参数,数组中的值可以是promise实例,全部promise完成时他返回,若有一个失败,则失败,返回的是第一个失败的子promise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值