js中的promise函数(ES6)

本文详细介绍了Promise的基本概念和使用方式,包括其作为全局构造函数、数据容器的特性,以及三种内部状态(等待、成功、失败)。通过示例展示了如何创建Promise对象并使用then和catch处理异步操作。此外,还讲解了async/await语法,如何简化Promise的使用,使得异步代码更加简洁易读。最后,分析了Promise和async函数的返回值规则。

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

promise

            1、它被设计成一个全局构造函数

            2 、这个函数创建出来的对象 是一个特殊的数据容器

            3、这个数据容器内部有三种状态: 等待 ==>产生的正确数据  产生了错误的数据

            4、创建对象时要求传一个函数参数==>也就是在这个函数中处理耗时业务,一般用法:

new Promise((resolve,reject)=>{resolve(),reject()}) 

promise函数中的then和catch方法

调用函数的resolve参数==>这时实际上就是调用了then方法传入的函数 (两者只是间接的关系

调用函数的reject参数==>这时实际上就是调用了catch方法传入的函数 (一样)

			var p1=new Promise((resolve,reject)=>{
				setTimeout(()=>{
					resolve('hello')
				},1000)
				// reject("业务出错了")	同理,resolve和reject只能存在一个				
			})
			console.log(p1)

			p1.then((data)=>{
				console.log(data,111)
			},(err)=>{
				console.log(err,222)
			})

			p1.then((data)=>{   
				console.log(data,112)
			})
			.catch((err)=>{ //在执行resolve的回调(也就是上面then中的第一个参数)时,如果抛出异常了(代码出错了),那么并不会报错卡死js,而是会进到这个catch方法中。
				console.log(err)
			})

 结果:等待1s后出现    

 注意:

一、new Promise((result,faild)=>{})在处理耗时操作的过程中 会有3个状态

1.处理中 没有调用resolve,reject这个方法

2.生成正确的结果 调用resolve

3.生成错误结果 调用reject

 二、 then函数有一个返回值:一定是一个新的Promise

            1、返回的新的Promise对象 是由cb(传入的回调)函数的返回值决定的

            2、cb函数的返回值也是一个Promise对象  那么then函数的返回值 就是它

           3、 cb函数的返回值不是一个Promise对象 那就就把cb的返回值封装为Promise对象 然后作为then的返回值

async

1.给函数一个async来修饰

2.函数内部用await来修饰带promise设计的异步函数 就会直接得到结果 不需要调用then方法来获取数据

3.async修饰的函数的返回值是一个then方法调用的返回值(同promise)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值