2016-02-27 4 views
5

Wie Typescript async/await Funktion zu verwenden und Typoskript-Standardversprechen in Knoten js FS-Modul zurückgeben und andere Funktion auf Versprechen gelöst aufrufen.Wie Verwenden von Typescript Async/erwarten mit Versprechen in Knoten JS FS Modul

Es folgt der Code:

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 
    }; 

Antwort

8

Denn ich denke, jetzt gibt es keine andere Möglichkeit, als mit Wrapper-Funktion gehen. Etwas wie folgt aus:

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"); 
} 

Es gibt einige lange Diskussion hier über Versprechen in node.js: Every async function returns Promise

0

Wenn Sie nicht möchten, dass die Versprechen Wrapper selbst schreiben Sie async-file verwenden können.

diesen Code mit so etwas wie folgt aussehen könnte ...

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