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);
    });
    

 

posted @ 2025-04-16 17:14  HelloMarsMan  阅读(8)  评论(0)    收藏  举报