首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点js子进程事件发射器与回调

节点js子进程事件发射器与回调
EN

Stack Overflow用户
提问于 2021-12-20 05:51:50
回答 1查看 315关注 0票数 1

在nodejs中为子进程附加回调或事件侦听器有什么区别吗?就像-

代码语言:javascript
复制
const execute = require('child-process').exec;
const process = execute('ping -n 1 www.google.com'); // or ping -c 1 www.google.com for mac

process.stdout.on('data', data => {
    console.log(data)
})  

在上面的代码中,我使用了一个事件侦听器作为输出,我在窗口中获取稳定的数据,但无法在macOS中获得输出。但如果我用回调方式-

代码语言:javascript
复制
const execute = require('child-process').exec;

execute('ping -c 1 www.google.com', (error, stdout, stderr) => {
   console.log(stdout);
})

我正在获取windows和mac中的输出数据。使用回调或事件侦听器(两者都是异步的)有什么区别吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-20 06:34:29

当异步任务的执行完成时,将调用callback。然而,这些事件必须根据观察者来触发。每个事件都有侦听器,当事件被触发时,它的相关侦听器函数启动执行。

  • 可以将多个侦听器附加到同一个事件。回调是一对一的通知,事件- one-to-many.
  • You不能从事件返回值。事件是单向的信息。经常会出现回调(error,data1,data2,data3,.)签名是因为负责正常和错误数据流的单个回调(异步库通常期望此behaviour)
  • EventEmitter-based API分离错误,而非错误messages
  • "error“事件在事件发射器中是特殊的:如果没有侦听器,EventEmitter会抛出异常。通过回调,您有责任检查第一个错误参数.

您可以检查堆栈溢出上的this链接,查看不同的b/w回调和事件。

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

https://stackoverflow.com/questions/70417849

复制
相关文章

相似问题

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