首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向Nodejs流发送end事件

如何向Nodejs流发送end事件
EN

Stack Overflow用户
提问于 2021-09-16 02:22:25
回答 1查看 158关注 0票数 0

我正在处理一个pelias项目,并使用wof-admin-lookup包来处理从文件读取的数据。

有一种情况,没有有效的数据可以推送到流中。wof-admin-lookup永远不会结束。

下面是我的代码:

代码语言:javascript
复制
const stream = recordStream.create(filePath)
        .pipe(blacklistStream())
        .pipe(adminLookup.create())
        .pipe(model.createDocumentMapperStream())
        .pipe(peliasDbclient())

  stream
        .on('data', data => {
            count++
        })
        .on('finish', () => {
            console.log(`Imported ${count} addresses`)
            resolve()
        })
        .on('error', (e) => {
            reject(e)
        })

下面是wof-admin-lookup中的代码:

代码语言:javascript
复制
module.exports = function(pipResolver, config) {
  if (!pipResolver) {
    throw new Error('valid pipResolver required to be passed in as the first parameter');
  }

  // pelias 'imports.adminLookup' config section
  config = config || {};

  const pipResolverStream = createPipResolverStream(pipResolver, config);
  const end = createPipResolverEnd(pipResolver);

  const stream = parallelTransform(config.maxConcurrentReqs || 1, pipResolverStream);
  stream.on('end', end);

  return stream;
};

虽然控制台记录了“导入的0个地址”,但如果我不通过Ctrl+C手动关闭它,pipResolverStream将永远保留。

更新时,只有在没有数据通过流传递时才会发生这种情况。

EN

回答 1

Stack Overflow用户

发布于 2021-09-16 04:29:56

“如果没有像< /dev/null这样的东西来生成EOF,则end事件永远不会触发。否则程序将等待终端发送^D。”

node.js: How to detect an empty stdin stream?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69201659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档