#青训营笔记创作活动#
1月17日 Day4

JS中最特别且重要的一环——Promise

在我的认识中,Promise就是用来解决回调地狱的一种方法,可以让代码的可读性更高。官方的描述是:Promise是异步编程的一种解决方案,在ES6中Promise被列为了正式规范,统一了用法,原生提供了Promise对象。

对于Promise的概念,比较官方的介绍就是:Promise是异步编程的一种解决方案。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

在我的理解下,所谓Promise其实就是一个通知。就像你期末考试,你不知道老师试卷什么时候改好,每天都担惊受怕自己是否及格。终于到了暑假的某一天,试卷发到你手里,这个时候只有两种结果:及格或不及格。 也就是Promise中的fulfilled(已成功)和 rejected(已失败)。然而我们等待试卷的过程就叫pending(进行中)。

官方里有这么一句话:除了异步操作的结果,任何其他操作都无法改变这个状态。

什么意思呢,也就是,我拿到了试卷,及格和不及格这个状态已经是事实了。也就是(已成功) 或 (已失败) 是没办法改变了。

怎么来定义Promise呢?它可以定义为成功(也就是resolve中返回的数据),和失败(也就是reject返回的数据)。
如果说Promise是决定成功与否的命运,那么then就是我们面对这些结果的处理。

对于then方法的概念,官方文档是这样描述的:then 方法接收两个函数作为参数,第一个参数是 Promise 执行成功时的回调,第二个参数是 Promise 执行失败时的回调,两个函数只会有一个被调用。

也就是说,我们这个暑假考完试后,老爸跟你讲了两种情况,如果你及格了,给你买一台ps5。如果不及格,罚你洗碗一个月。
而then就是处理结果的一个方法,分别是成功的回调(第一个参数),和失败的回调(第二个参数)。 我们还在等待结果的时候就可以安排好怎样应对这个结果。

这就是对于基本的Promise概念的理解,当然Promise是一个庞大的内容,对于它更深入的理解就等用到它的时候再记录吧~
展开
评论