gpt4 book ai didi

javascript - 在给定的时间间隔内尽可能多次地调用函数

转载 作者:行者123 更新时间:2023-12-02 22:09:13 24 4
gpt4 key购买 nike

我试图在给定的时间间隔内尽可能多次地调用函数test()

此处该函数应运行 15 秒。

function test(): void; // Only type def

function run() {
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, 15000); // 15 seconds
while (true) {
test();
}
});
}

run()
.then(() => {
console.log('Ended');
});

但是,该函数不会停止运行,并且 Ended console.log 也不会出现。 ( promise 显然没有解决)。有没有办法在 Javascript 中实现这一点?

我想知道,我可以使用控制台计时器并将条件放在 while 语句中吗? (但这是最好的方法吗?)

最佳答案

你的函数不停止执行的原因是因为解决 promise 不会停止脚本执行。您想要的是在 run() 方法中的某个位置存储一个标志,以便在要解决 Promise 时可以翻转该标志。

请参阅下面的概念验证:我已将时间缩短至 1.5 秒,并添加了一个虚拟 test() 方法,仅用于说明目的:

let i = 0;
function test() {
console.log(`test: ${i++}`);
}

function run() {
return new Promise(resolve => {
let shouldInvoke = true;
setTimeout(() => {
shouldInvoke = false;
resolve();
}, 1500); // 15 seconds

const timer = setInterval(() => {
if (shouldInvoke)
test();
else
window.clearInterval(timer);
}, 0);
});
}

run()
.then(() => {
console.log('Ended');
});

关于javascript - 在给定的时间间隔内尽可能多次地调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59612950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com