Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Веселая ассинхронность javascript-a (https://javascript.ru/forum/css-html/49472-veselaya-assinkhronnost-javascript.html)

Esigns 14.08.2014 16:21

Веселая ассинхронность javascript-a
 
Привет. Может кто-то сталкивался с подобной проблемой.
Есть код вида:
// запускаем рисование продукта. Продукты все разные, но они состоят из блоков-колонок.
drawProduct(); 
// после того как отрисован продукт нужно вывести кнопку в центре каждой колонки продукта. Соответственно нужны x,y,width,height кнопки.
addButton(); 

function createProductCollumn ()  {
 // createProductCollumn содает колонку
 cols[cols.length]  = new ProductCollumn();
}

// риуем нужный набор колонок 
function drawProduct() {
     createProductCollumn(параметры1);
     createProductCollumn(параметры2);
     ...
}

function addButton() {
    for(var i in productCollumns) {
        new button(productCollumns[i].width .....)
    } 
}


Проблема в том, что продукт рисуется не мгновенно. Пока класс продукта полностью обработает нужную информацию и выведет картинку(уже загруженную по onload) 1 раз из 10, я получаю ошибку "productCollumns[i].width is undefined" во время рисовки кнопки. Как я понимаю JS запустил 2 функции одновременно.

Какой оптимальный способ бороться? Спасибо.

WorM32 14.08.2014 16:58

Почему drawProduct выполняется асинхронно?

Esigns 14.08.2014 17:57

Все спасибо разобрался. Проблема была не в том. Сори.


Часовой пояс GMT +3, время: 21:38.