【问题标题】:Callback and event emitter functionality using NodeJS使用 NodeJS 的回调和事件发射器功能
【发布时间】:2021-12-08 03:35:03
【问题描述】:

程序语言是NodeJS

待办事项步骤: 1.变量input有输入值。从输入中提取 n1 和 n2。 2. 编写一个函数,求出 n1 和 n2 的所有倍数之和,包括 1000 以下(包括 1000)。此函数应在 2 秒后记录总和。 3. 为事件发射器的任何实例注册一个名为 MyEvent 的事件,并为其绑定一个名为 logInfo 的函数,该函数将“{n1} 和 {n2} 的倍数”记录到控制台并发出事件(不要传递任何发出事件时的参数)。

约束

  • 输入:输入,以空格分隔的字符串
  • 输出:由换行符分隔的字符串

注意:即使您得到了准确的输出,如果您不使用问题陈述中提到的回调和事件概念,测试用例也会失败。

示例案例 0

自定义测试的示例输入 100 1000 样本输出: 100 和 1000 的倍数 6500

解释 100的倍数是100,200,300,......1000,1000的倍数是1000以下,包括1000。

总和 = (100+200+............1000) + 1000

总和 = 6500

示例案例 1

自定义测试的示例输入

500 1200

样本输出:

500 和 1200 的倍数

1500


我试过下面的代码:

process.stdin.resume();
process.stdin.setEncoding("ascii");
var input = "";
process.stdin.on("data", function (chunk) {
    input += chunk;
});

process.stdin.on("end", function () {
    
    let _input = input.split (" ");
    let a = parseInt(_input[0]);
    let b = parseInt(_input[1]);
    console.log("Multiples of " + a + " & " + b);
    
    var sum = 0;
    for (var x = 0; x < 1000; x++)
    {
        if (x % a === 0 || x % b === 0)
        {
        sum += x;
        }
    }
    console.log(sum);
    
});

代码测试:

案例 1

输入(标准输入)
4 6

您的输出(标准输出)

4 和 6 的倍数
165834

预期输出

4 和 6 的倍数
208666

================================================

案例 2

输入(标准输入)
3 5

您的输出(标准输出)

3 和 5 的倍数
233168

预期输出

3 和 5 的倍数
267333


请帮助我获取此代码。我的输出与此逻辑不匹配。

【问题讨论】:

    标签: node.js nodes node-modules nodejs-stream nodejs-server


    【解决方案1】:

    我希望下面的代码对您有所帮助并给出预期的输出。谢谢! :)

    process.stdin.resume();
    process.stdin.setEncoding("ascii");
    var input = "";
    process.stdin.on("data", function (chunk) {
        input += chunk;
    });
    
    process.stdin.on("end", function () {
        const myArr = input.split(" ");
        const EventEmitter = require('events');
        var eventEmitter = new EventEmitter();
        let sum=0;
        let a = myArr[0];
        let b = myArr[1];
        for(let i=3; i<=1000; i++){
            if(i%a==0){
                sum += i
            }
            if(i%b==0){
                sum+=i
            }
        }
    
        eventEmitter.on('MyEvent', logInfo);
    
        function logInfo(input) {
            console.log("Multiples of " + a + " & "+ b);
            console.log(sum);
        }
    
        eventEmitter.emit('MyEvent', ""); 
    });
    

    【讨论】:

      【解决方案2】:
      process.stdin.resume();
      process.stdin.setEncoding("ascii");
      var input = "";
      process.stdin.on("data", function (chunk) {
          input += chunk;
      });
      
      
      
      process.stdin.on("end", function () {
          const myArr = input.split(" ");
          const EventEmitter = require('events');
          var eventEmitter = new EventEmitter();
          let sum=0;
          let a = myArr[0];
          let b = myArr[1];
          for(let i=3; i<=1000; i++){
              if(i%a==0){
                  sum += i
              }
              if(i%b==0){
                  sum+=i
              }
          }
          
          eventEmitter.on('MyEvent', function(){
              setTimeout(function(){
                  console.log("Multiples of " + a + " & "+ b);
                  console.log(sum);},5000);
          });
          
          eventEmitter.emit('MyEvent'); 
      });
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      【解决方案3】:

      检查以下解决方案

      process.stdin.resume();
      process.stdin.setEncoding("ascii");
      var input = "";
      process.stdin.on("data", function (chunk) {
          input += chunk;
      });
      
      process.stdin.on("end", function () {
          const myArr = input.split(" ");
          const EventEmitter = require('events');
          var eventEmitter = new EventEmitter();
          let sum=0;
          let a = myArr[0];
          let b = myArr[1];
          for(let i=3; i<=1000; i++){
              if(i%a==0){
                  sum += i
              }
              if(i%b==0){
                  sum+=i
              }
          }
      
          eventEmitter.on('MyEvent', logInfo);
      
          function logInfo(input) {
              console.log("Multiples of " + a + " & "+ b);
              console.log(sum);
          }
      
          eventEmitter.emit('MyEvent', ""); 
      });
      

      【讨论】:

        【解决方案4】:

        我只调用控制台作为异步函数,请避免我的错误。

        process.stdin.on("end", function () {
        
            // Enter your code here
              const myArr = input.split(" ");
            const EventEmitter = require('events');
            var eventEmitter = new EventEmitter();
            let sum=0;
            let a = myArr[0];
            let b = myArr[1];
            for(let i=3; i<=1000; i++){
                if(i%a==0){
                    sum += i
                }
                if(i%b==0){
                    sum+=i
                }
            }
            setTimeout(function(){
                console.log(sum);
            },2000)
        
            eventEmitter.on('MyEvent', logInfo);
        
            function logInfo() {
                console.log("Multiples of " + a + " & "+ b);
                
            }
        
            eventEmitter.emit('MyEvent'); 
        
        });

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-17
          • 1970-01-01
          • 2020-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-17
          相关资源
          最近更新 更多