一、Promise 的理解

Promise 是什么?

1.抽象表达:
  1. Promise 是一门新的技术(ES6 规范)
  2. Promise 是 JS 中进行异步编程的新解决方案
    备注:旧方案是单纯使用回调函数
2. 具体表达:
  1. 从语法上来说: Promise 是一个构造函数
  2. 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/
    失败的结果值

Promise 的状态

实例对象中的一个属性 『PromiseState』

  • pending 未决定的
  • resolved / fullfilled 成功
  • rejected 失败
promise 的状态改变
  1. pending 变为 resolved
  2. pending 变为 rejected
    说明: 只有这 2 种, 且一个 promise 对象只能改变一次
    无论变为成功还是失败, 都会有一个结果数据
    成功的结果数据一般称为 value, 失败的结果数据一般称为 reason

Promise 对象的值

实例对象中的另一个属性 『PromiseResult』
保存着异步任务『成功/失败』的结果

  • resolve
  • reject

promise 的基本流程

在这里插入图片描述

promise 的基本使用

  1. 使用 1: 基本编码流程
<script>
// 1) 创建 promise 对象(pending 状态), 指定执行器函数
 const p = new Promise((resolve, reject) => {
	// 2) 在执行器函数中启动异步任务 
	setTimeout(() => {
		const time = Date.now()
		// 3) 根据结果做不同处理
		// 3.1) 如果成功了, 调用 resolve(), 指定成功的 value, 变为 resolved 状态
		if (time%2===1) { 
			resolve('成功的值 '+ time)
		} else { 
		// 3.2) 如果失败了, 调用 reject(), 指定失败的 reason, 变为 rejected 状态
			reject('失败的值' + time) 
		}
	}, 2000) })
	// 4) 能 promise 指定成功或失败的回调函数来获取成功的 vlaue 或失败的 reason
	p.then(
		value => { // 成功的回调函数 onResolved, 得到成功的 vlaue
			console.log('成功的 value: ', value)
		},
		reason => { // 失败的回调函数 onRejected, 得到失败的 reason
			console.log('失败的 reason: ', reason)
		 }
	)
</script>

Promise优点

1.指定回调函数的方式更加灵活

  • 旧的: 必须在启动异步任务前指定
  • omise: 启动异步任务 => 返回 promie 对象 => 给 promise 对象绑定回调函数(甚至可以在异步任务结束后指定/多个)

2.支持链式调用, 可以解决回调地狱问题
1.什么是回调地狱?
回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调执行的条件
2. 回调地狱的缺点? 不便于阅读
不便于异常处理
3. 解决方案?
promise 链式调用
4. 终极解决方案?
async/await

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值