0%

promise的使用

参考文档:promise

promise 对象是一个代理对象(代理一个值),被代理的值在promise对象创建时可能是未知的。它允许你为异步操作的成功和失败分别绑定相应的处理方法(handlers)。 这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise对象

语法

1
new Promise( function(resolve, reject) {...} /* 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函数的返回值被忽略。

示例:

1
2
3
4
5
6
7
8
9
let demo = new Promise((resolve, reject) => {
resolve('success');
reject('failed') ;
})
demo.then((result) => {
console.log(result);
}, (result) => {
console.log(result);
})

promise的三种状态

状态 说明
pending 初始状态,既不是成功,也不是失败状态
fulfilled 意味着操作成功完成
rejected 意味着操作失败

promise的链式调用

  • Promise.prototype.then
  • Promise.prototype.catch

promise的作用

主要是解决地狱回调的问题