What is a Promise ?

What is the concept of promise and how to use promise ?

Posted by My on May 14, 2022

引言

什么是「Promise」? 对于后面入门的同学来说,能回答的应该就是「异步」、「回调」等相关了,当然这也与我们的学习路程有关。有的同学是本专业,但是涉及不深,也不知道。有的同学是一般培训机构的,了解完「html」和框架,就开始写业务。有的同学是自学的,阅读层次没有达到那么深。

回归正传,「Promise」意为承诺,那到底如何去理解呢?

Promise

在谈论到「Promise」的时候,应该从两个方面去谈,也就是说「Promise」涉及到了两层含义。

Promisesaplush 规范

这是一个社区的规范,这个规范出现的比较早,出现在 ES6 之前,是一个民间标准。主要是用来处理「回调地狱」和「异步处理不统一」的问题。在2015年之前,很多第三方库都接纳了这一规范。

image.png

里面介绍很清楚,它就是一个带有then方法的对象。

1
2
3
   const p ={
        then:function(){}
      }

这个对象有一个 then 方法,那对象 p 就是 Promise 。又或者说有一个构造函数 A,里面有个 then 方法,那这个构造函数也是一个 Promise 。

这篇规范就在告诉你 then 方法应该「实现怎样一个功能」、应该「接收什么样的参数」、应该「如何处理逻辑」,应该「返回什么」。

一些第三方库在处理异步环节上都吸纳了这套规范,直到 ES6 出现。

ES6 的 Promise

ES6 搞了一个构造函数「Promise」 ,那这个构造函数这前面的规范有什么关联?那就是通过 new创建出来的对象是满足「Promisesaplsh 规范」的。

它除了满足这个规范之外,还加了其他东西,比如 catch finalylyall等。在这个规范里,它说了只要满足这个规范,那就是 「Promise」,只要是「Promise」,就能够互相操作。

结语

所以说,这就是对 Promise 在概念上的理解,满足以上的规则,那就属于 Promise。