我想知道是否有可能,以及如何在客户端不按顺序单独运行多个 JavaScript 函数。
如果不可能,是否有解决方法?
我想知道是否有可能,以及如何在客户端不按顺序单独运行多个 JavaScript 函数。
如果不可能,是否有解决方法?
如果您只是想安排它们以任何顺序运行,那很好,只需这样做(使用setTimeout
或其他方式)。如果他们正在做诸如等待 ajax 完成之类的事情,他们将不会相互干扰。但是,如果他们在 JavaScript 代码中工作,他们会在实际运行时保持主 UI 线程忙碌。
如果您需要执行繁重的 JavaScript 处理并希望保持主 UI 线程可用以便 UI 响应,您可以将处理卸载到web worker,它们同时运行在与主 UI 线程不同的线程上。
这是一个简单的网络工作者示例(来自我的回答here):
主JS文件:
function order(number) {
var w = new Worker("worker.js");
w.addEventListener("message", function(e) {
if (e.data && e.data.command == "log") {
console.log(e.data.message);
}
w = null;
});
console.log("Queuing order: " + number);
w.postMessage({command: "go", order: number});
}
function takeOrder(number, cb) {
console.log("Preparing order: " + number + "");
cb(number); // Call the callback
}
console.log("Starting to accept order");
for (var i = 0; i < 3; i++) {
console.log("Taking order: " + i);
takeOrder(i, order); // Pass order as the callback
}
console.log("Job completed!");
worker.js
:
self.addEventListener("message", function(e) {
if (e.data && e.data.command == "go") {
for (var i = 0; i < 1000000000; i++); // kill time
self.postMessage({command: "log", message: "Order: " + e.data.order + " completed"});
}
});