我下面有一些伪代码:
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()
的输出来创建此“触发”。
猴子补丁generateNumber()
。
var oldGenerateNumber = generateNumber;
generateNumber = function() {
const ret = oldGenerateNumber();
add_1();
return ret;
};