在开发中使用Promise

68 阅读2分钟

步骤如下:

  • 创建一个Promise对象:通过调用Promise构造函数,传入一个函数作为参数,这个函数被称为执行器函数。执行器函数接受两个参数,分别是resolve和reject,它们是两个函数,用于表示Promise的状态变化
  • 执行异步操作:在执行器函数中,可以执行异步操作,例如发起一个网络请求或读取文件
  • 根据异步操作的结果,调用resolve或reject函数:当异步操作成功完成时,调用resolve函数,并传递结果数据作为参数;当异步操作失败时,调用reject函数,并传递错误信息作为参数
  • 处理Promise的状态变化:通过调用Promise实例的then方法,可以注册一个或多个回调函数,用于处理Promise的状态变化。then方法接受两个参数,分别是成功状态的回调函数和失败状态的回调函数
  • 链式调用then方法:then方法返回一个新的Promise实例,可以通过链式调用then方法,实现对多个异步操作的顺序控制和数据传递
  • 处理异常:通过调用Promise实例的catch方法,可以注册一个回调函数,用于捕获异常并进行处理

代码:

 function fetchData() {
  return new Promise((resolve, reject) => {
    // 异步操作
    setTimeout(() => {
      const data = 'Hello, World!';
      // 模拟异步操作成功
      resolve(data);
      // 模拟异步操作失败
      // reject(new Error('Failed to fetch data.'));
    }, 1000);
  });
}

fetchData()
  .then(data => {
    console.log('Data:', data);
    return data.toUpperCase();
  })
  .then(upperCaseData => {
    console.log('Upper case data:', upperCaseData);
  })
  .catch(error => {
    console.error('Error:', error);
  });

在上述示例中,fetchData函数返回一个Promise实例,通过调用then方法注册了两个回调函数,分别用于处理异步操作成功和失败的情况。在第一个回调函数中,将数据转为大写字母;在第二个回调函数中,打印转换后的数据。如果异步操作失败,则会调用catch方法注册的回调函数,打印错误信息