Promise 面试题
-
问题描述: 什么是 Promise?它的作用是什么?
答案: Promise 是 JavaScript 中处理异步操作的一种机制。它可以用于更加优雅地处理异步代码,避免了回调地狱。Promise 的主要作用是提供一种处理异步操作的统一接口和语法,使得异步代码更易于理解和维护。
-
问题描述: Promise 的三种状态是什么?它们分别代表什么意思?
答案: Promise 有三种状态:
pending
(进行中)、fulfilled
(已成功)和rejected
(已失败)。这些状态分别代表以下含义:pending
:初始状态,表示操作正在进行中,既不是成功也不是失败状态。fulfilled
:表示操作已成功完成,即异步操作成功。rejected
:表示操作已失败,即异步操作发生错误或被拒绝。
-
问题描述: 如何创建一个 Promise 实例?给出一个示例。
答案: 可以使用
Promise
构造函数来创建一个 Promise 实例。以下是一个示例:const myPromise = new Promise((resolve, reject) => { // 异步操作,例如发送网络请求或读取文件 setTimeout(() => { const data = 'Hello, world!'; resolve(data); // 操作成功,调用 resolve 方法 // 或者 // reject(new Error('操作失败')); // 操作失败,调用 reject 方法 }, 2000); });
-
问题描述: 如何在 Promise 中处理异步操作的成功和失败?给出一个示例。
答案: 可以使用
then
方法来处理异步操作的成功情况,使用catch
方法来处理异步操作的失败情况。以下是一个示例:myPromise .then(data => { console.log('操作成功', data); }) .catch(error => { console.error('操作失败', error); });
-
问题描述: 如何使用 Promise 处理多个异步操作的并行执行?给出一个示例。
答案: 可以使用
Promise.all
方法来处理多个异步操作的并行执行。Promise.all
接收一个 Promise 数组作为参数,并返回一个新的 Promise,该 Promise 在所有输入 Promise 都成功解决后才解决,或者在任何一个输入 Promise 失败时拒绝。以下是一个示例:const promise1 = fetch('/api/data1'); const promise2 = fetch('/api/data2'); const promise3 = fetch('/api/data3'); Promise.all([promise1, promise2, promise3]) .then(responses => { // 所有操作成功 console.log('所有操作成功', responses); }) .catch(error => { // 操作失败 console.error('操作失败', error); });