searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

浅谈promise(I)

2023-05-29 03:20:34
4
0

首先来了解一下学习promise之前要知道的两个名词

  • 异步:简单讲就是将一件事分成两个阶段去做,当完成第一阶段事情时,转而做其他事情,等准备好了,再回来做第二阶段的事情。例如:我们读取某个数据库中的信息,首先向后端发起获取信息的请求,要求读取相关数据。然后程序执行其他任务,等到后端返回所请求的数据,再接着执行对数据的处理
  • 回调函数:JavaScript语言对异步编程的实现,就是回调函数。所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。也就是callback。
    代码中,readFile函数的第二个参数,就是回调函数,也就是任务的第二段。等到操作系统返回了/etc/passwd 这个文件以后,回调函数才会执行。
    rf.readFile('/test/users', function (err, data) {
      if (err) throw err
      console.log(data)
    })​

Promise的含义

  • Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。

Promise对象两个特点

  • 对象的状态不受外界影响。Promise共有三种状态:Pending(进行中)、Resolved(已完成)和Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
  • 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从Pending 变为Resolved和从Pending变为Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。就算改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。

Promise也有缺点

  • 首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消
  • 其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部
  • 第三,当处于Pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
0条评论
0 / 1000
周****乐
4文章数
0粉丝数
周****乐
4 文章 | 0 粉丝