2016-04-04 62 views
0

假設customWS是寫流..實現自定義寫流類的完成事件處理

util.inherits(customWS, stream.Writable); 

我們實現我們的邏輯來處理在_write()像下面的寫..

customWS.prototype._write = function(chunk, encoding, done) { 
    // ... 
    } 

現在要使用customWS類,我們會做類似下面的操作。

aReadableStream.pipe(new customWS()).on('finish', callback); 

那麼callback函數的參數是什麼?

我可以通過一個像callback ..

function(data) { 
    // ...  
    } 

..或它固定??

如果它不是固定的,那麼如何在customWS類中實現這樣的回調?

有類似的東西..

// in the implementation of customWS class 
    customWS.prototype._finish = function(user_specified_callback) { 
    user_specified_callback(some_data_say_a_bool_val); 
    } 

    // in the code, where i use the customWS class 
    aReadableStream.pipe(new customWS()).on('finish', function(flag) { 
    if (flag) { 
     console.log('yes'); 
    } 
    }); 

回答

0

通常,您應該不需要做任何事情來支持finish()finish事件及其簽名記錄在here。它沒有任何參數,它只是一個通知,表示可寫入的流已經「關閉」並且不能再被寫入。

如果作爲流實現者,您需要在可寫流的「關閉」之前專門做一些事情,那麼在撰寫本文時,您或多或少會失去運氣。有一個PR將此功能添加到可寫入的流。如果你正在實現一個Transform流,你將擁有_flush()這就是你想要的,但是這隻在你實現一個雙工流時纔有用(不能只寫)。