前端 JavaScript 进阶面试题, Promise 有哪些基本用法?
前端 JavaScript 进阶面试题, Promise 有哪些基本用法?
QA
Step 1
Q:: Promise 的基本用法是什么?
A:: Promise 是 JavaScript 中用于处理异步操作的一种方式。基本用法包括创建一个 Promise,使用 .then() 方法处理成功的结果,使用 .catch()
方法处理错误。Promise 的状态可以是 pending(进行中)、fulfilled(已成功)或 rejected(已失败)。
Step 2
Q:: 如何创建一个新的 Promise?
A:: 可以使用 Promise 构造函数创建一个新的 Promise,例如:
const promise = new Promise((resolve, reject) => {
// 异步操作
if (操作成功) {
resolve(value);
} else {
reject(error);
}
});
Step 3
Q:: Promise.then()
方法的作用是什么?
A:: Promise.then()
方法用于在 Promise 状态变为 fulfilled 后执行一个函数,并接收该函数的返回值。它会返回一个新的 Promise,使得可以进行链式调用。例如:
promise.then(value => {
console.log(value);
}).catch(error => {
console.error(error);
});
Step 4
Q:: Promise.catch()
方法的作用是什么?
A:: Promise.catch() 方法用于处理 Promise 被 reject 的情况。它相当于 .then(null, rejection)
方法。例如:
promise.catch(error => {
console.error(error);
});
Step 5
Q:: Promise.finally()
方法的作用是什么?
A:: Promise.finally()
方法用于在 Promise 结束时,无论结果是 fulfilled 还是 rejected,都会执行一个回调函数。例如:
promise.finally(() => {
console.log('Promise 已结束');
});
Step 6
Q:: 如何使用 Promise.all()
?
A:: Promise.all()
方法接收一个 Promise 对象的可迭代对象(例如数组),并返回一个新的 Promise,只有当所有输入的 Promise 都已完成(fulfilled 或 rejected)时,才会进行 resolve 或 reject。例如:
Promise.all([promise1, promise2]).then(values => {
console.log(values);
}).catch(error => {
console.error(error);
});
Step 7
Q:: 如何使用 Promise.race()
?
A:: Promise.race()
方法同样接收一个 Promise 对象的可迭代对象,并返回一个新的 Promise。当其中的一个 Promise 解决或拒绝时,返回的 Promise 就会解决或拒绝。例如:
Promise.race([promise1, promise2]).then(value => {
console.log(value);
}).catch(error => {
console.error(error);
});