我想知道它是否可行,如何在客户端没有订单的情况下分别运行多个JavaScript函数。
如果不可能有解决方法吗?
答案 0 :(得分:4)
如果您只是想要安排他们以任何顺序运行,那很好,只需这样做(使用setTimeout
或其他)。如果他们正在做等待ajax完成等事情,他们就不会互相干扰。但是,如果他们在JavaScript代码中工作,他们会在实际运行时保持主UI线程忙碌。
如果您需要进行繁重的JavaScript处理并希望保持主UI线程可用,以便UI响应,您可以将处理卸载到web workers,它在主UI线程的单独线程上运行,同时进行。
这是一个简单的Web worker示例(来自my answer 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"});
}
});