Post

Promise 使用方法

Promise的基本使用

Promise是一个构造函数,通过new关键字实例化对象

语法

1
new Promise((resolve, reject) => {})
  • 接受一个函数作为参数
  • 在参数函数中接受两个参数
    • resolve
    • reject

Promise实例

Promise实例有两个属性

  • state
  • result

Promise的状态

  • pending
  • fulfilled
  • rejected

Promise状态的改变

通过调用resolve()reject()改变当前Promise对象的状态

1
2
3
4
5
const p = new Promise((resolve, reject) => {
  // resolve(); 调用函数,使当前Promise对象的状态改为fulfilled
  // reject(); 调用函数,使当前Promise对象的状态改为rejected
})
console.dir(p); //fulfilled

Promise状态的改变是一次性的

Promise的结果

1
2
3
4
5
6
const p = new Promise((resolve, reject) => {
  // 调用函数,传递参数,改变丹铅Promise对象的结果
	// resolve('success result');
  // reject('fail result');
})
console.dir(p); 

Promise的方法

then方法

返回值是一个Promise对象

1
2
3
4
5
6
7
8
9
10
const p = new Promise((resolve, reject) => {
  resolve('success');
})

p.then((value) => {
  console.log('成功时调用', value);
}), (reason) => {
  console.log('失败时调用', reason);
}
console.dir(p); 

Promise状态不改变不会执行then方法

使用return可以将实例的状态改为fulfilledreturn的值会作为下一个then的参数。在前一个实例中出错则状态改为rejected

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const p = new Promise((resolve, reject) => {
  resolve('success');
})

p.then((value) => {
  console.log('成功时调用', value);
  return 1;
}), (reason) => {
  console.log('失败时调用', reason);
  return -1;
}.then((value) => {
  console.log('成功时调用', value);
}), (reason) => {
  console.log('失败时调用', reason);
}

catch方法

1
2
3
4
5
const p = new Promise((resolve, reject) => {
  throw new Error('Error occured');
}).catch ((reason) => {
  console.log('Failed', reason)
})

Promise的状态改为rejectedPromise执行体中出现代码错误时,catch方法被执行

This post is licensed under CC BY 4.0 by the author.