什么是Promise,Promise的三种状态[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。
什么是Promise对象:
- Js中进行异步编程的新的解决方案(传统的解决方案——回调函数和事件),用于表示一个异步操作的最终完成 (或失败), 及其结果值.。
- 语法上:promise是一个构造函数
- 简单来说,promise对象用来封装一个异步操作并可以获取其结果
语法:
new Promise(function (resolve, reject) {
} /* executor */)
executor:
executor是带有
resolve
和
reject
两个参数的函数 。Promise构造函数执行时立即调用
executor
函数,
resolve
和
reject
两个函数作为参数传递给
executor
(executor 函数在Promise构造函数返回所建promise实例对象前被调用)。
resolve
和
reject
函数被调用时,分别将promise的状态改为fulfilled(完成)或rejected(失败)。executor 内部通常会执行一些异步操作,一旦异步操作执行完毕(可能成功/失败),要么调用resolve函数来将promise状态改成fulfilled,要么调用
reject
函数将promise的状态改为rejected。如果在executor函数中抛出一个错误,那么该promise 状态为rejected。executor函数的返回值被忽略。
promise 有三种状态
Pending(进行中,初始状态,既不是成功,也不是失败状态。)、Resolved(已完成,又称 Fulfilled)、Rejected(已失败)
- 这三种状态的变化途径只有2种:
- 异步操作从 未完成 pending => 已完成 resolved
- 异步操作从 未完成 pending => 失败 rejected
- 状态一旦改变,就无法再次改变状态,这也是它名字 promise-承诺 的由来,一个promise对象只能改变一次
pending 状态的 Promise 对象可能会变为fulfilled 状态并传递一个值给相应的状态处理方法,也可能变为失败状态(rejected)并传递失败信息。当其中任一种情况出现时,Promise 对象的
then
方法绑定的处理方法(handlers )就会被调用(then方法包含两个参数:onfulfilled 和 onrejected,它们都是 Function 类型。当Promise状态为
fulfilled
时,调用 then 的 onfulfilled 方法,当Promise状态为
rejected
时,调用 then 的 onrejected 方法, 所以在异步操作的完成和绑定处理方法之间不存在竞争)。
因为 Promise.prototype.then 和 Promise.prototype.catch 方法返回promise 对象, 所以它们可以被链式调用。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142969.html原文链接:https://javaforall.cn
- 什么是Promise对象:
- 语法:
- promise 有三种状态