如何在 Node JS FS 模块中使用 Typescript Async/ await with promise

How to use Typescript Async/ await with promise in Node JS FS Module

本文关键字:Async Typescript await promise with Node JS 模块 FS      更新时间:2023-09-26

如何使用打字稿异步/等待函数并在节点js FS模块中返回打字稿默认承诺,并在承诺解决时调用其他函数。

以下是代码:

  if (value) {
     tempValue = value;
     fs.writeFile(FILE_TOKEN, value, WriteTokenFileResult);
            }
 function WriteTokenFileResult(err: any, data: any) {
        if (err) {
            console.log(err);
            return false;
        }
        TOKEN = tempValue;
        ReadGist(); // other FS read File call
    };

由于 NodeJS 10.0.0 fsPromise 模块可用于实现此结果。

import { promises as fsPromises } from 'fs';
await fsPromises.writeFile('file.txt', 'data')
目前我认为

没有其他方法可以使用包装器函数。像这样:

function WriteFile(fileName, data): Promise<void>
{
    return new Promise<void>((resolve, reject) =>
    {
        fs.writeFile(fileName, data, (err) => 
        {
            if (err)
            {
                reject(err);    
            }
            else
            {
                resolve();
            }
        });
    });        
}
async function Sample()
{
    await WriteFile("someFile.txt", "someData");
    console.log("WriteFile is finished");
}

这里有一些关于node.js中promise的冗长讨论:每个异步函数都返回Promise。

如果你不想自己编写 Promise 包装器,你可以使用 async-file。

使用它,您的代码可能如下所示...

(async function () {
  //...
  await fs.writeFile(FILE_TOKEN, value);
  var data = await fs.readFile('gist');
  // do something with your "gist" data here...
})();