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