引言
什么是「Promise」? 对于后面入门的同学来说,能回答的应该就是「异步」、「回调」等相关了,当然这也与我们的学习路程有关。有的同学是本专业,但是涉及不深,也不知道。有的同学是一般培训机构的,了解完「html」和框架,就开始写业务。有的同学是自学的,阅读层次没有达到那么深。
回归正传,「Promise」意为承诺,那到底如何去理解呢?
Promise
在谈论到「Promise」的时候,应该从两个方面去谈,也就是说「Promise」涉及到了两层含义。
Promisesaplush 规范
这是一个社区的规范,这个规范出现的比较早,出现在 ES6
之前,是一个民间标准。主要是用来处理「回调地狱」和「异步处理不统一」的问题。在2015年之前,很多第三方库都接纳了这一规范。
里面介绍很清楚,它就是一个带有then
方法的对象。
1
2
3
const p ={
then:function(){}
}
这个对象有一个 then
方法,那对象 p 就是 Promise 。又或者说有一个构造函数 A,里面有个 then
方法,那这个构造函数也是一个 Promise 。
这篇规范就在告诉你 then
方法应该「实现怎样一个功能」、应该「接收什么样的参数」、应该「如何处理逻辑」,应该「返回什么」。
一些第三方库在处理异步环节上都吸纳了这套规范,直到 ES6
出现。
ES6 的 Promise
ES6
搞了一个构造函数「Promise」 ,那这个构造函数这前面的规范有什么关联?那就是通过 new
创建出来的对象是满足「Promisesaplsh 规范」的。
它除了满足这个规范之外,还加了其他东西,比如 catch
、finalyly
和 all
等。在这个规范里,它说了只要满足这个规范,那就是 「Promise」,只要是「Promise」,就能够互相操作。
结语
所以说,这就是对 Promise 在概念上的理解,满足以上的规则,那就属于 Promise。