前言,对于promise,大家在开发中一定非常熟悉,这篇文章无难点,就是给promise小朋友来个简单的自我介绍
一,Promise的含义
Promise是一种异步编程的解决方案。
简单来说,它就是一个容器,里面保存了某个未来才会结束的事件(通常是异步操作)的【结果】。
有了Promise,我们可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
【基本用法示例】
//通过构造函数创建一个promise对象
var promise = new Promise(function(resolve,reject){
//构造函数的参数为一个函数,函数的参数为resolve和reject函数
// some code
if(/*异步操作成功*/){
resolve(value) //状态从pending-->resolved
}else{
reject(error) //状态从pending-->rejected
}
})
这个异步操作的结果就体现在Promise对象的状态上。下面进一步了解他的三个状态。
二,三种状态:pending、resolved、rejected
Promise对象的状态有以下【两个特点】:
1,对象的状态不受外界影响。只有异步操作的结果可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。(即:promise名字的由来--承诺)
2,一旦状态改变就不会再变,且任何时候都可以获得这个结果。
从pending变为resolved,或pending变成rejected,一旦改变就凝固了。(不带反悔哦~~)
其中三个状态:
pending状态:进行中,不会触发then和catach
resolved状态:异步操作完成并通过resolve方法返回结果数据,会触发后续的then回调函数
rejected状态:异步操作失败并通过reject方法返回error内容,会触发后续的catch回调函数
小知识点:then和catch的链式调用题
解题思路:then和catch也会返回一个Promise,默认是resolved状态,但如果回调函数中有报错,则会返回rejected。具体看代码执行结果。
好啦~~以上就是今天对promise的简单介绍,如有不当,欢迎指正!
参考材料:阮一峰老师ES6标准入门