CNode

关于readline和Promise求助

问答
Nnotail发布于11 年前最后回复11 年前4 回复5213 浏览0 收藏

求大神解惑,

捕获.PNG

有没有能够把readline的每一行都resolve的方法,这个只把第一行reslove了

查看回复

回复 (4)

I
i5ting#1·11 年前

readline 是干啥的呢?

N
notail#2·11 年前

readline是引入的node自带的库,这里能够一行一行的监听proc运行后的标准输出,我想对每一行进行后续处理,利用resolve将这一行给后续的程序用,但是这里有个问题,用resolve后将第一行resolve之后就不会再resolve其他的行了

J
Jar-18#3·11 年前

你要么每次line事件发生后就直接做后续的事,要么每次把line放到一个数组,resolve整个数组。如果'line'事件一定要实时处理,也可以用events,emitter,就是另一种思路了

W
William17#4·11 年前

我猜你代码里大概是这样的

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);
  }
}
参与回复
登录后即可参与回复。登录