Once 是我最習慣的模塊,它展現了幾乎全部的我書寫的經過issac Schlueter建立的應用。npm
原理很簡單,Once使用各種一個函數且返回了一個函數,你能夠調用這個函數,可是隻能調用一次。若是你想調用屢次,子函數的調用將不會受理。安全
var once = require(‘once’) function myAPI (cb) { cb = once(cb) // my code }
下面防止你錯誤毀掉兩次,且容許你更加安全的將回調處理函數直接附加到事件觸發器(event emitter)上面且在合適的地方stream函數
function (cb) { cb = once(cb) var stream = createReadableStream() stream.on(‘data’, { /* do stuff with data */ }) stream.on(‘end’, cb) stream.on(‘error’, cb) }
根聽說明,一個能夠閱讀的stream應該只是結束或者發生錯誤一次,實際上不少的strema沒有爲此檢車屬性,這致使了錯誤可能在完全結束以後發生,或者在錯誤以後回調結束。ui
上面的函數保證了你不會發生這些bug。spa
原文:https://blog.xervo.io/npm-install-oncecode