簡體   English   中英

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

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

如何在節點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
    };

現在我認為沒有別的方法可以使用包裝器功能。 像這樣的東西:

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

由於NodeJS 10.0.0 fsPromises模塊可用於實現此結果。

import { promises as fsPromises } from 'fs';
await fsPromises.writeFile('file.txt', 'data')

如果您不想自己編寫Promise包裝器,可以使用async-file

使用此代碼,您的代碼可能類似於以下內容......

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM