javascript的一些知识(四)--异步

Promise是用于处理异步操作的机制,通过链式调用简化回调地狱。发布/订阅模式是异步编程的一种设计模式,任务执行完成后发布信号,其他任务订阅信号以知晓何时开始。生成器通过yield关键字允许函数暂停和恢复执行,提供了一种控制异步流程的方式。async/await是基于Promise的语法糖,使得异步代码更接近同步风格,提高了代码的可读性。

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

promise

  • promise是一种链式调用的方式来组织异步代码,可以将原来以回调形式调用的代码改为
    链式调用。简单来说,Promise 就是用同步的方式写异步的代码,用来解决回调问题。
  • Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved
    (已完成,又称 Fulfilled)和Rejected(已失败)。只有异步操作的结果,
    可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,
    它的英语意思就是“承诺”,表示其他手段无法改变。
  • Promise对象的状态改变,只有两种可能:从Pending变为Resolved和从Pending变为Rejected。
    只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。就算改变已经发生了,
    你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,
    事件的特点是,如果你错过了它,再去监听,是得不到结果的。

发布与订阅

  • 我们假定,存在一个"信号中心",某个任务执行完成,就向信号中心"发布"(publish)一个信号,
    其他任务可以向信号中心"订阅"(subscribe)这个信号,从而知道什么时候自己可以开始执行。
    这就叫做"发布/订阅模式"(publish-subscribe pattern),又称"观察者模式"(observer pattern)。

生成器Generators/yield

  • Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同,Generator 最大的特点就是
    可以控制函数的执行。
  • 语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。
  • Generator 函数除了状态机,还是一个遍历器对象生成函数。
  • 可暂停函数, yield可暂停,next方法可启动,每次返回的是yield后的表达式结果。
  • yield表达式本身没有返回值,或者说总是返回undefined。next方法可以带一个参数,该参数就会被当作上一个yield表达式的返回值。

async/await

  • 使用async/await,你可以轻松地达成之前使用生成器和co函数所做到的工作,它有如下特点:
  • async/await是基于Promise实现的,它不能用于普通的回调函数。
  • async/await与Promise一样,是非阻塞的。
  • async/await使得异步代码看起来像同步代码,这正是它的魔力所在。
  • 一个函数如果加上 async ,那么该函数就会返回一个 Promise
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值