我下面有一些伪代码:
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;
};