Node.js 如何将具有两个回调的函数调用转换为Promise

Node.js 如何将具有两个回调的函数调用转换为Promise

Promise: Promise用于处理结果,如果获得所需的输出,则执行 then 块的代码,如果出现错误,则执行 catch 块的代码。

Promise的样子大致如下:

function()
    .then(data => {

        // After promise is fulfilled
        console.log(data);
    })
    .catch(err => {

        // After promise is rejected
        console.error(err);
});

回调函数: 回调函数是一个函数的最后一个参数。它将用于执行一些操作,使用从函数中获取的值。带有两个回调函数的函数调用如下所示

fs.readFile('./hello.txt', ,'utf8', (err, data) => {
      if (err) {
          console.error(err);
            return;
      }
      console.log(data);
});

这是File System(文件系统)模块的readFile(读文件)函数。它用于读取文件的数据。readFile函数接受两个参数:文件路径、文件编码和回调函数。文件路径是你的文件所在的路径,文件编码是文件的编码,默认是“utf8”。在回调函数中,检查错误,如果有错误则记录错误,如果没有错误则记录结果。

让我们先运行这个函数: 确保你已经创建了一个名为“hello.txt”的文件,并在文件中添加了一些内容,本例中是“Hello World”。

Node.js 如何将具有两个回调的函数调用转换为Promise

示例:

const fs = require('fs'); 
  
fs.readFile('./hello.txt', ,'utf8', (err, data) => { 
     if (err) { 
         console.error(err); 
               return; 
     } 
     console.log(data); 
});

输出:

Node.js 如何将具有两个回调的函数调用转换为Promise

让我们将此转换为一个 promise。

机制: 要将该 readFile 函数转换为 promise,我们需要创建一个新函数,我们称之为 readFilePromise ,它有两个参数 fileNameencoding 。在这个函数内部,我们返回一个新的 promise,并在这个 promise 中使用 readFile 函数。如果 readFile 函数返回所需的输出,则解析这个 promise,这意味着它以 promise 的形式返回数据,如果函数没有返回所需的输出,则拒绝这个 promise,这意味着它返回错误而不是数据。

const readFile = (fileName, encoding) => {
   return new Promise((resolve, reject) => {
       fs.readFile(fileName, encoding, (err, data) => {
           if (err) {
               return reject(err);
           }
           resolve(data);
       });
   });
}

完整代码:

const fs = require('fs'); 
  
const readFilePromise = (fileName, encoding) => { 
    return new Promise((resolve, reject) => { 
        fs.readFile(fileName, encoding, (err, data) => { 
            if (err) { 
                return reject(err); 
            } 
  
            resolve(data); 
        }); 
    }); 
} 
  
readFilePromise('./hello.txt', 'uft8') 
    .then(data => { 
        console.log(data); 
    }) 
    .catch(err => { 
        console.log(err); 
    });

运行应用程序的步骤:

打开终端并键入以下命令。

node app.js

输出:

Node.js 如何将具有两个回调的函数调用转换为Promise

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程