JavaScript中的Promise机制

Promise是什么

Promise是异步处理对象以及对其进行各种操作的组件。一个Promise对象代表一个目前不可用,但是在未来的某个时间点可以被解析值。允许以同步的方式编写异步代码。

Promise出现的原因

在promise之前,在JS中的异步编程都是采用回调函数和事件的方式,但是这种编程方式在处理复杂的业务情况下,很容易出现回调多层嵌套,使得代码很难理解和被维护。
Promise改善了这种情形下的异步编程的解决方案,它是由社区提出和实现的。ES6将其写进了语言标准,统一了用法,并且提供了一个原生的对象Promise

Promise的API

JavaScript中的Promise机制_第1张图片
从这个简单的例子可以看出我们需要基本掌握的是
* Promise的构造函数
* resolve()、reject()
* then()

a、promise的构造函数

JavaScript中的Promise机制_第2张图片

执行结果如下:
reslult.png

可以看到先输出了promise,再输出了end
当通过Promise构造函数实例化一个对象时,会传递一个函数作为参数,而且这个函数在新建一个Promise后,会立即执行。

b、resolve/reject

在Promise中,Promise操作有3中状态,但是其只存在于三种状态的一种。其关系如下:

JavaScript中的Promise机制_第3张图片
注意:这种状态的改变只能从未完状态到完成态或失败态转变,不能逆反。完成态和失败态不能相互转化,而且,状态一旦转化则不能修改。
只有异步操作的结果,才能决定当前状态是哪一种状态,任何其他操作无法改变这一状态。
通常,我们在声明一个Promise对象的实例时,在我们传入的匿名参数中:
* resolve代表完成态后的操作
* reject代表失败态后的操作

c、then

了解到上面那些之后,我们也许会问then方法的作用是什么呢,resolvereject又是从哪里传递过来的。
其实,我们在实例化Promise对象时,调用该对象的实例方法then,其中then的第一个参数对应着完成状态的操作,也就是resolve,第二个参数代表着失败态的操作,是reject。
总的来说,Promise通过then方法来指定处理异步操作结果的方法。

未完待续。。。

你可能感兴趣的:(JavaScript)