JavaScript ждет, пока изображение полностью загрузится, прежде чем продолжить скрипт

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

Моя проблема в том, что я могу• предварительно загрузить все изображения, поскольку этот сценарий должен работать с большим количеством изображений, а предварительная загрузка может быть слишком ресурсоемкой. Так что я'Я застрял, пытаясь загрузить новое изображение каждый раз через цикл, но яЯ застрял в состоянии гонки между загрузкой изображения и сценарием, рисующим его на холсте.с контекстом. По крайней мере яя уверен, чтоС тем, что происходит, потому что сценарий будет хорошо работать с предварительно кэшированными изображениями (например, если я обновлюсь после загрузки страницы ранее).

Как и ты'посмотрим, есть несколько строк кода, закомментированных, потому что яя невероятно новичок в JavaScript, и они не былине так, как я думал, но я нене хочу забывать о них, если мне понадобится функциональность позже.

Это фрагмент кода, который, по моему мнению, порождает проблему:

РЕДАКТИРОВАТЬ: Таким образом, я получил свою функцию на работу после того, как предложение

 function myFunction(imageURLarray) {
  var canvas = document.getElementById('imagecanvas');
  console.log("Canvas Grabbed");

  if (!canvas || !canvas.getContext) {
    return;
  }

  var context = canvas.getContext('2d');

  if (!context || !context.putImageData) {
    return;
  }

  window.loadedImageCount = 0;
  loadImages(context, canvas.width, canvas.height, imageURLarray, 0);
}

function loadImages(context, width, height, imageURLarray, currentIndex) {
  if (imageURLarray.length == 0 || imageURLarray.length == currentIndex) {
    return false;
  }
  if (typeof currentIndex == 'undefined') {
    currentIndex = 0;
  }

  var currentimage = new Image();
  currentimage.src = imageURLarray[currentIndex];

  var tempindex = currentIndex;
  currentimage.onload = function(e) {

    // Function code here

    window.loadedImageCount++;

    if (loadedImageCount == imageURLarray.length) {

      // Function that happens after all images are loaded here
    }
  }
  currentIndex++;
  loadImages(context, width, height, imageURLarray, currentIndex);
  return;
}

Ответы на вопрос(3)

Ваш ответ на вопрос