【前端基础面试】简单聊聊~Promise

176 阅读2分钟

前言,对于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对象的状态上。下面进一步了解他的三个状态。

二,三种状态:pendingresolvedrejected

Promise对象的状态有以下【两个特点】:

1,对象的状态不受外界影响。只有异步操作的结果可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。(即:promise名字的由来--承诺)

2,一旦状态改变就不会再变,且任何时候都可以获得这个结果。

pending变为resolved,或pending变成rejected,一旦改变就凝固了。(不带反悔哦~~)

其中三个状态:

pending状态:进行中,不会触发thencatach

resolved状态:异步操作完成并通过resolve方法返回结果数据,会触发后续的then回调函数

rejected状态:异步操作失败并通过reject方法返回error内容,会触发后续的catch回调函数

小知识点:then和catch的链式调用题

解题思路:then和catch也会返回一个Promise,默认是resolved状态,但如果回调函数中有报错,则会返回rejected。具体看代码执行结果。

好啦~~以上就是今天对promise的简单介绍,如有不当,欢迎指正!

参考材料:阮一峰老师ES6标准入门