Promise示例
// 回调地狱示例:多层嵌套
fs.readFile('file1.txt', 'utf8', (err, data1) => {
if (err) return console.error(err);
fs.readFile(data1, 'utf8', (err, data2) => {
if (err) return console.error(err);
fs.writeFile('result.txt', data2, (err) => {
if (err) return console.error(err);
console.log('操作完成');
});
});
});
以上可使用Promise改造为:
const fs = require('fs');
// 将 fs.readFile 封装成 Promise 形式
function readFilePromise(filePath, encoding) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, encoding, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
// 将 fs.writeFile 封装成 Promise 形式
function writeFilePromise(filePath, data) {
return new Promise((resolve, reject) => {
fs.writeFile(filePath, data, (err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
// 使用 Promise 链完成异步操作
readFilePromise('file1.txt', 'utf8')
.then((data1) => {
return readFilePromise(data1, 'utf8');
})
.then((data2) => {
return writeFilePromise('result.txt', data2);
})
.then(() => {
console.log('操作完成');
})
.catch((err) => {
console.error(err);
});

浙公网安备 33010602011771号