Как запустить несколько асинхронных функций отдельно без порядка в JavaScript, не мешая друг другу?

Я хочу знать, возможно ли это и как я могу запускать несколько функций JavaScript по отдельности в какое-то время без заказа на стороне клиента.

Если это невозможно, есть ли обходной путь?

1 ответ

Если вы просто хотите запланировать их запуск в любом порядке, это нормально, просто сделайте это (с setTimeout или что угодно). Если они делают такие вещи, как ожидание завершения Ajax и тому подобное, они не будут мешать друг другу. Однако, если они выполняют работу с кодом JavaScript, они будут поддерживать основной поток пользовательского интерфейса, когда они действительно будут работать.

Если вам нужно выполнить сложную обработку JavaScript и вы хотите, чтобы основной поток пользовательского интерфейса был доступен, чтобы пользовательский интерфейс реагировал, вы можете перенести обработку на веб-работников, которые одновременно работают в отдельном потоке от основного потока пользовательского интерфейса.

Вот простой пример веб-работника (из моего ответа здесь):

Основной файл 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"});
  }
});
Другие вопросы по тегам