[如何让函数在每次收到另一个函数的输出时执行? (NodeJS)

问题描述 投票:0回答:1

我下面有一些伪代码:

function generateNumber() {
  const n = Math.floor(Math.random() * 15);
  console.log('Original Number')
  console.log(n)
  return {
    n
  };
}

function loop() {
  const rand = Math.round(Math.random() * (4000 - 600)) + 600;
  setTimeout(() => {
    generateNumber();
    add_1();
    loop();

  }, rand);
}

function add_1() {
  const x = generateNumber() + 1;
  console.log('New Number')
  console.log(x)
}

loop()

我想让add_1()每次generateNumber()输出一个数字时执行。因此,现在generateNumber()将输出一个值,并立即转到add_1(),在此将1值添加到传入号码,然后将其发送回去。 loop()功能仅用于使generateNumber()在不同时间连续输出值。但实际上,可能是我希望传感器提供数据,并且每次传感器发送一个值时,我都希望数据进入函数(即add_1())。

将函数中的generateNumber()add_1()一起使用是我唯一的选择吗? (上面的伪代码就是这种情况)

我想要它,以便add_1()每次获得输入都执行。 最好是不需要add_1()进入功能或使用generateNumber()循环。

我的猜测是add_1()必须是一个异步函数,必须等待generateNumber()发出的某种承诺。

[您可以在代码中看到,没有什么要“触发” add_1()来执行的,所以我相信我的问题是如何基于generateNumber()的输出来创建此“触发”。

javascript node.js function
1个回答
0
投票

猴子补丁generateNumber()

var oldGenerateNumber = generateNumber;
generateNumber = function() {
    const ret = oldGenerateNumber();
    add_1();
    return ret;
};    
© www.soinside.com 2019 - 2024. All rights reserved.