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

Sha*_*han 6 javascript fs node.js promise typescript

如何在节点js FS模块中使用Typescript async/await函数并返回typescript默认promise,并在promise解析后调用其他函数.

以下是代码:

  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
    };
Run Code Online (Sandbox Code Playgroud)

Ami*_*mid 8

现在我认为没有别的方法可以使用包装器功能.像这样的东西:

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");
}
Run Code Online (Sandbox Code Playgroud)

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


Fel*_*ets 7

由于可以使用NodeJS 10.0.0 fsPromises模块来实现此结果。

import { promises as fsPromises } from 'fs';
await fsPromises.writeFile('file.txt', 'data')
Run Code Online (Sandbox Code Playgroud)