点击上方蓝字设为星标
JavaScript中的Promise使得异步操作得以简化,本期将围绕Promise进行讲解。
生活中的Promise
Promise一词翻译为中文译为承诺,这里的承诺表示保证在一定条件下会执行某个事件
作为承诺,它可以执行,也可以违背
当执行承诺时,我们可以从中有所获得,可以进一步执行一些事件
当违背承诺时,我们需要知道其中的原因,并采取进一步措施
当做出承诺时,我们不能立刻采取措施,只能提前约定,当执行承诺或违背承诺时,我们需要做什么
有可能出现以下情况,我们可能等待了一段时间,但是承诺还是未能实现。所以,我们需要设置一个时间阈值,当超出了这个时间,这个承诺就不再有意义,因为此时,你已经有了下一步的计划
JavaScript中的Promise
在JavaScript中,也存在一个Promise对象。它有三种状态,即pending(进行中),fulfilled(已成功)和rejected(失败)。Promise在运行过程中,有且仅有两种情况,即从pending到fulfilled或者从pending到rejected,即状态一旦发生改变,它就凝固了。之后的任何时候,再去获取这个Promise对象,它的值将不会发生改变。
01 Promise的优缺点Promise可以将异步操作以同步的流程表示出来,其提供的统一的接口简化了操作,避免的代码的层层嵌套,可以解决回调地狱的问题(下文会进行举例说明)
Promise一旦建立,就会立即执行,无法取消。当处于pending状态时,无法得知当前处于什么阶段
Promise对象可以使用new来调用其构造器,其中的回调函数接收两个参数,即resolve和reject,如果异步操作执行成功,则调用resolve函数返回预期结果,反之调用reject传递错误信息。
new Promise(function(resolve, reject) {
resolve() reject()})
首先我们写一段最简单的Promise,来体会一下Promise的用法:
var result = truep1 = new Promise(function(resolve, reject) {
if(result) {