Promise和异步

1.异步编程

异步行为是为了优化因计算量大而 时间长的操作。

如果在等待其他操作完成的同时,即使运行其他指令,系统也能保持稳定,那么这样做就是务实的。

异步操作并不一定计算量大或要等很长时间。只要你不想为等待某个异步操作而阻塞线程执行,那么任何时候都可以使用。

同步与异步

  • 同步行为对应内存中顺序执行的处理器指令
  • 异步行为类似于系统中断,即当前进程外部的实体可以触发代码执行

以往的异步编程模式(回调地狱)

在早期的 JavaScript 中,只支持定义回调函数 来表明异步操作完成。串联多个异步操作是一个常见的问题,通常需要深度嵌套的回调函数(俗称“回 调地狱”)来解决。

2.Promise

Promise基础

Promise是一个有状态的对象,可能处于如下3中状态之一(Promise的状态是私有的)

  • pending(待定

  • resolved/ fulfillled (解决/兑现

  • rejected (拒绝

    无论变为哪种状态都是不可逆的

Promise的两大用途

  1. 抽象地表示一个异步操作
  2. Promise封装的异步操作会实际生成某个值,而Promise状态改变时可以访问这个值

通过执行函数控制Promise状态

由于Promise的状态是私有的,所以只能在内部进行操作。内部操作在Promise的执行器函数中完成。

执行器函数的两项职责

  1. 初始化期约的异步行为
  2. 控制状态的最终转换(通过调用resolve()和 re
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值