求大神解惑,
有没有能够把readline的每一行都resolve的方法,这个只把第一行reslove了
readline 是干啥的呢?
readline是引入的node自带的库,这里能够一行一行的监听proc运行后的标准输出,我想对每一行进行后续处理,利用resolve将这一行给后续的程序用,但是这里有个问题,用resolve后将第一行resolve之后就不会再resolve其他的行了
你要么每次line事件发生后就直接做后续的事,要么每次把line放到一个数组,resolve整个数组。如果’line’事件一定要实时处理,也可以用events,emitter,就是另一种思路了
我猜你代码里大概是这样的
readline.getLongStamp(opts).then(function(line) { // 这里处理line },function(reason) { // 这里判断出错或者读完? });
既然这样, 那就别返回promise了,把处理函数直接传进去调用
opts.onLine = function(line) { // ... } opts.onClose = function(code) { // ... } readline.getLongStamp(opts);
exports.getLongStamp = function(opts) { // ... var onLine = opts.onLine, onClose = opts.onClose; if(typeof onLine === 'function') { rd.on('line', onLine); } if(typeof onClose === 'function') { proc.on('close', onClose); } }
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
readline 是干啥的呢?
readline是引入的node自带的库,这里能够一行一行的监听proc运行后的标准输出,我想对每一行进行后续处理,利用resolve将这一行给后续的程序用,但是这里有个问题,用resolve后将第一行resolve之后就不会再resolve其他的行了
你要么每次line事件发生后就直接做后续的事,要么每次把line放到一个数组,resolve整个数组。如果’line’事件一定要实时处理,也可以用events,emitter,就是另一种思路了
我猜你代码里大概是这样的
既然这样, 那就别返回promise了,把处理函数直接传进去调用