gpt4 book ai didi

javascript - 数组上的setInterval

转载 作者:行者123 更新时间:2023-12-04 09:19:37 25 4
gpt4 key购买 nike

是否可以使用 javascript/jquery 执行以下操作?

使用 setInterval 和一个函数名称数组,如果数组只有 1 个函数,如果用户在 10:00:00 打开网页,它应该执行以下操作

function 1 - 10:00:00
function 1 - 10:00:01
function 1 - 10:00:02
function 1 - 10:00:03
function 1 - 10:00:04

然后如果用户点击另一个按钮,一个新的函数名称将被添加到数组中,最终会执行以下操作:

function 1 - 10:00:05
function 2 - 10:00:06
function 1 - 10:00:07
function 2 - 10:00:08
function 1 - 10:00:09
function 2 - 10:00:10
function 1 - 10:00:11
function 2 - 10:00:12
function 1 - 10:00:13

如果用户第 3 次点击该按钮,一个新的函数名称将被添加到数组中,最终会执行以下操作:

function 1 - 10:00:14
function 2 - 10:00:15
function 3 - 10:00:16
function 1 - 10:00:17
function 2 - 10:00:18
function 3 - 10:00:19
function 1 - 10:00:20
function 2 - 10:00:21
function 3 - 10:00:22

这可能吗?如果可能的话,有人可以帮我写一些示例脚本来说明如何实现这一点吗?

最佳答案

一个简单的机制:

var intervalWork = (function() {
var workers = [], wi = 0;
var interval = setInterval(function() {
if (!workers.length) return;
workers[wi](wi);
wi = (wi + 1) % workers.length;
}, 60 * 1000);

return function(w) {
workers.push(w);
};
})();

然后你有一个名为“intervalWork”的函数,它允许将一个函数添加到队列中。每个计时器间隔(此处为 60 秒)将运行一个函数。这些函数在队列中传递它们的索引;这看起来通常并不有趣,但它可以让您打印出这些消息。

函数会这样调用:

intervalWork(function(index) {
// do interesting stuff
console.log("Function " + index + " " + new Date());
});

或者您可以调用它并传递一个已定义函数的名称:

intervalWork(someRandomFunction);

您当然可以使它更高级并提供其他执行模式或其他任何模式。您没有描述这段代码的总体要点,所以我真的不知道您还想要什么。

edit — 再注意一点:许多人可能(正确地)建议,与其使用浏览器的 setInterval() 机制驱动的计时器,不如使用setTimeout() 并自行设置每个后续计时器。在像您这样的情况下,这可能很重要,因为您无法控制那些“ worker ”功能的作用,因此完成的工作量是无限的。然而,基本设置是相同的。

关于javascript - 数组上的setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4519845/

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