2016-02-27 13 views
5

Come utilizzare la funzione asincrona/attesa Typescript e restituire promesse predefinite del dattiloscritto nel modulo nodo js FS e chiamare l'altra funzione al termine della promessa.Come usare Typescript Async/attendere con promessa in Node Modulo JS FS

seguito è il codice:

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

risposta

8

Per ora penso che non c'è altro modo per andare con funzione wrapper. Qualcosa di simile a questo:

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

V'è una certa lunga discussione qui circa le promesse in node.js: Every async function returns Promise

0

Se non si desidera scrivere il Promessa da soli wrapper è possibile utilizzare async-file.

Usando questo il codice potrebbe essere simile a quanto segue ...

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