2016-02-27 37 views
5

Làm thế nào để sử dụng chức năng TypeScript async/await và trả về các lời hứa mặc định typescript trong module js FS và gọi hàm khác khi lời hứa được giải quyết.Cách sử dụng Typescript Async/await với lời hứa trong Node JS FS Module

Tiếp theo là các mã:

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

Trả lời

8

Để bây giờ tôi nghĩ rằng không có cách nào khác để đi với chức năng bao bọc. Một cái gì đó như thế này:

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

Có một số cuộc thảo luận dài ở đây về những lời hứa trong Node.js: Every async function returns Promise

0

Nếu bạn không muốn viết lời hứa wrappers mình bạn có thể sử dụng async-file.

Sử dụng mã của bạn này có thể trông giống như sau ...

(async function() { 
    //... 
    await fs.writeFile(FILE_TOKEN, value); 
    var data = await fs.readFile('gist'); 
    // do something with your "gist" data here... 
})(); 
Các vấn đề liên quan