面试题答案
一键面试Promise 的三种状态
- Pending(进行中):初始状态,既不是成功,也不是失败状态。
- Fulfilled(已成功):意味着操作成功完成,Promise 会有一个 resolved 的值。
- Rejected(已失败):意味着操作失败,Promise 会有一个 rejection 的原因。
简单 Promise 示例实现异步操作链式调用
function readFileAsync(filePath) {
return new Promise((resolve, reject) => {
// 模拟异步读取文件
setTimeout(() => {
const success = true;
if (success) {
const fileContent = '这是文件内容';
resolve(fileContent);
} else {
reject(new Error('读取文件失败'));
}
}, 1000);
});
}
function processFileContent(content) {
return new Promise((resolve, reject) => {
// 模拟对文件内容进行处理
setTimeout(() => {
const processedContent = content.toUpperCase();
resolve(processedContent);
}, 1000);
});
}
readFileAsync('example.txt')
.then((fileContent) => {
return processFileContent(fileContent);
})
.then((processedContent) => {
console.log(processedContent);
})
.catch((error) => {
console.error(error.message);
});
在上述代码中:
readFileAsync
函数返回一个 Promise,模拟异步读取文件操作,成功时resolve
文件内容,失败时reject
错误。processFileContent
函数同样返回一个 Promise,模拟对文件内容的处理,成功时resolve
处理后的内容。- 通过
.then
方法进行链式调用,当readFileAsync
成功时,会将文件内容传递给processFileContent
进行处理,最后打印处理后的内容。如果任何一个 Promise 被reject
,则通过.catch
捕获错误并打印错误信息。