一、介绍
Promise
,译为承诺,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大
在以往我们如果处理多层异步操作,我们往往会像下面那样编写我们的代码
doSomething(function(result) {
doSomethingElse(result, function(newResult) {
doThirdThing(newResult, function(finalResult) {
console.log('得到最终结果: ' + finalResult);
}, failureCallback);
}, failureCallback);
}, failureCallback);
阅读上面代码,是不是很难受,上述形成了经典的回调地狱
现在通过Promise
的改写上面的代码
doSomething().then(function(result) {
return doSomethingElse(result);
})
.then(function(newResult) {
return doThirdThing(newResult);
})
.then(function(finalResult) {
console.log('得到最终结果: ' + finalResult);
})
.catch(failureCallback);
瞬间感受到promise
解决异步操作的优点:
-
链式操作减低了编码难度
-
代码可读性明显增强
下面我们正式来认识promise
:
状态
promise
对象仅有三种状态
-
pending
(进行中) -
fulfilled
(已成功) -
rejected
(已失败)
特点
-
对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态
-
一旦状态改变(从
pending
变为fulfilled
和从pending
变为rejected
),就不会再变,任何时候都可以得到这个结果
流程
认真阅读下图,我们能够轻松了解promise
整个流程
二、用法
Promise
对象是一个构造函数,用来生成Promise
实例
Promise
构造函数接受一个函数作为参数,该函数的两个参数分别是