关于readline和Promise求助
求大神解惑,
有没有能够把readline的每一行都resolve的方法,这个只把第一行reslove了
4 回复
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);
}
}