gpt4 book ai didi

javascript - 是否可以在 javascript 中并排运行多个函数,即使它们不是同时触发的?

转载 作者:行者123 更新时间:2023-11-30 17:16:17 24 4
gpt4 key购买 nike

我的脚本运行如下:

//Gets triggered when a button is clicked
function button_1() {
...
setTimeout(other_function(), 0);
...
}

//Checks if for hundreds of thumbnails a high-res version is available
function other_function() {
...
$.ajax({
url: url_to_highres_file,
type: 'HEAD',
cache: false,
error: function() {
$(#output).text('The file ' + filename_of_current_file + ' is not available!');
}
});
...
}

我知道当函数“button_1”被触发时它会执行代码直到函数“other_function”被触发。从那时起,两个函数同时运行伪。我现在遇到的问题是,函数“other_function”运行了很长时间。当该功能正在运行并且用户触发另一个功能时,例如“button_2”,然后 javascript 在开始执行函数“button_2”中的代码之前先完成函数“other_function”。

由于“other_function”功能对用户来说没有那么高的优先级,因此网站响应输入比先完成“other_function”功能更为重要。

有没有办法仍然执行函数“other_function”的代码块,同时在两者之间混合函数“button_2”的代码块,这样它们并排运行,用户不必等到函数“other_function”已经完成了?

非常感谢您的帮助!

最佳答案

有三种可能的方法来处理它,具体取决于您所说的“并排”是什么意思。如果您谈论的是实际同时执行代码,它只能通过多线程实现,因为您可以想象代码就像一个通过 CPU 的字面线程,传统上也被描述为一个“磁带”(因为它曾经是这样的)。

同时处理的唯一方法是使用多个线程,多个 CPU 内核而不是一个。这样即使一个线程花费很长时间(阻塞),其他线程仍在处理中。另一个优点是,两个线程的处理速度实际上是原来的两倍,因为您使用的是双倍的处理能力(或更多,取决于您可以使用的线程数)。

Javascript 没有多线程支持,因为它的设计很简单。如果您正在为浏览器编写 Javascript,您唯一的选择是使用 Web Workers API,nodejs有一个非常相似的Cluster标准库中的 API 以及框架。

第二种方法称为“子例程”,在这种方法中,您无需进行整个昂贵的计算,而是将其分成许多小块并在每个小块之后返回控制权,因此可以进行其他计算(例如事件处理) 在这些 block 之间。

第三,“异步”方法与您的问题无关。我只是提到它,因为它是解决许多看起来非常相似的问题的最佳方法。人们通常只希望函数“等待某事”,而不是并排进行多个计算。这是一个完全不同的话题,但却是一个非常受欢迎的话题。

关于javascript - 是否可以在 javascript 中并排运行多个函数,即使它们不是同时触发的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071539/

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