前端经典面试题合集, 什么是 ES6 中的 Promise?它的使用场景有哪些?
前端经典面试题合集, 什么是 ES6 中的 Promise?它的使用场景有哪些?
QA
Step 1
Q:: 什么是 ES6
中的 Promise?
A:: Promise 是 ES6
引入的一种用于处理异步操作的对象。它表示一个异步操作的最终完成(或失败)及其结果值。Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。一个 Promise 对象代表一个异步操作,有三种状态:Pending(进行中),Fulfilled(已成功)和 Rejected(已失败)。Promise 提供了 then 和 catch 方法用于处理异步操作的成功和失败回调。
Step 2
Q:: Promise 的使用场景有哪些?
A:: Promise 通常用于处理异步操作,如网络请求(AJAX 请求),定时器(setTimeout),文件操作,数据库查询等。它可以帮助我们避免回调地狱(Callback Hell),使代码更易于阅读和维护。
Step 3
Q:: Promise 的基本用法是什么?
A:: Promise 的基本用法包括创建 Promise 对象、在 Promise 内部进行异步操作、使用 then 方法处理成功结果、使用 catch 方法处理错误。示例代码如下:
const promise = new Promise((resolve, reject) => {
// 异步操作
if (成功) {
resolve(结果);
} else {
reject(错误);
}
});
promise.then(result => {
console.log(result);
}).catch(error => {
console.error(error);
});
Step 4
Q:: 如何使用 Promise.
all?
A:: Promise.
all 接受一个 Promise 数组,返回一个新的 Promise。当所有 Promise 都成功时,新的 Promise 变为 Fulfilled 状态,并返回所有结果组成的数组;如果其中一个 Promise 失败,新的 Promise 变为 Rejected 状态,并返回失败的原因。示例代码如下:
const promise1 = Promise.resolve(1);
const promise2 = Promise.resolve(2);
const promise3 = Promise.resolve(3);
Promise.all([promise1, promise2, promise3]).then(values => {
console.log(values); // [1, 2, 3]
}).catch(error => {
console.error(error);
});
Step 5
Q:: 如何使用 Promise.
race?
A:: Promise.
race 接受一个 Promise 数组,返回一个新的 Promise。当第一个 Promise 完成(无论是成功还是失败)时,新的 Promise 就会采用该 Promise 的状态和结果。示例代码如下:
const promise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then(value => {
console.log(value); // 'two'
}).catch(error => {
console.error(error);
});