Node.js 如何将基于Promise的应用程序重写为使用Async/Await

Node.js 如何将基于Promise的应用程序重写为使用Async/Await

在本文中,我们将看到如何将基于Promise的Node.js应用程序重写为使用Async/Await。

假设我们需要读取文件’index.txt’的内容,并且我们有一个名为’readFilePromise’的函数,它使用fs模块的’readFile’方法来读取文件的数据。如果找到数据,则’readFilePromise’函数将解决Promise,否则将拒绝带有相应错误的Promise。

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’函数处理数据,该函数接受两个参数:文件路径和文件编码。如果获取到所需的输出,就执行then块中的代码;如果获取到错误,就执行catch块中的代码。

readFilePromise('./input.txt', 'utf8')
    .then(data => {
        console.log(data);
    })
    .catch(err => {
        console.log(err);
});

示例:

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('./input.txt', 'utf8') 
    .then(data => { 
        console.log(data); 
    }) 
    .catch(err => { 
        console.log(err); 
    });

输出:

Node.js 如何将基于Promise的应用程序重写为使用Async/Await

现在让我们使用async/await来重写这个promise。为了使用’await’,我们必须使用’async’关键字,’await’用于暂停程序执行,直到fs模块的’readFile’方法返回结果。这个结果可能是一个错误或所需的数据。如果是错误,则需记录错误;如果不是,需记录所需数据。

const fs = require('fs');

const readFileAsyncAwait = async (filePath, encoding) => {
    await fs.readFile(filePath, encoding, (err, data)=>{
        if(err){
            console.log(err);
        }
        console.log(data);
    });
}

然后,我们可以使用两个参数调用‘readFilePromise’函数,即文件路径和文件编码。如果发生错误,它只会记录错误,否则记录所需的数据。

readFileAsyncAwait('input.txt', 'utf8');

示例:

const fs = require('fs'); 
  
const readFileAsyncAwait = async (filePath, encoding) => { 
    await fs.readFile(filePath, encoding, (err, data)=>{ 
        if(err){ 
            console.log(err); 
        } 
        console.log(data); 
    }); 
} 
  
readFileAsyncAwait('input.txt', 'utf8');

输出:

Node.js 如何将基于Promise的应用程序重写为使用Async/Await

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程