2017-04-11 47 views
0

我有這樣的代碼:節點流答應錯誤處理

let generateSmth = function(len, j, stream, headers) { 

    len--; 
    j++; 

    if (len === 0) { 
     stream.write(headers.map(function(v) {return v + '_' + j;})); 
     stream.end(); 
    } else { 
     if (stream.write(headers.map(function(v) {return v + '_' + j;}))) { 
      generateSmth(len, j, stream, headers); 
     } else { 
      stream.once('drain',()=>{generateSmth(len, j, stream, headers)}); 
     } 
    } 
}; 
const fs = require('fs'), 
     myStream = fs.createWriteStream('test.txt'); 
let myPromise = new Promise((resolve, reject)=>{ 
    try { 
     generateSmth(10000, 0,()=>{ 
      resolve(()=>{ 

      }); 
     }, myStream); 
    } catch (error) { 
     reject(error); 
    } 
}); 

我瞭解到的try/catch是不是趕上錯誤generateSmth功能適當的方式。但我不明白如何在我的函數中使用流時捕獲錯誤? 任何人都可以幫助我嗎?謝謝。

+0

小費,說明你想要什麼你的代碼做的,就是它的目的,而不是隻粘貼一段代碼塊,我們要種猜猜爲什麼它在那裏。你想實現什麼? –

+0

我需要寫入由我的函數generateSmth生成的約10000行的文件。另外我應該使用Promises。 – Michiko

回答

0

裏面你的諾言構造函數添加以下內容:

myStream.on('error', reject)