Помощник
|
Поговорим об асинхронности |
Arks
|
Сообщение
#1
|
||
|
|
||
|
|||
Zippovich |
18.1.2013, 0:44;
Ответить: Zippovich
Сообщение
#2
|
|
можно в глобальной переменной хранить данные какие запросы вернулись или просто счетчик и вызывать из колбеков проверку этой переменной.
а про начало я не понял - вы про domready? |
|
|
Arks
|
Сообщение
#3
|
|
а про начало я не понял - вы про domready? Скорее про DOMContentLoaded и его эмуляцию. Собственно я и хочу услышать конкретику. можно в глобальной переменной хранить данные какие запросы вернулись или просто счетчик и вызывать из колбеков проверку этой переменной. Вот в последнем обновлении я так и сделал. Но мне кажется этот способ неоптимальным. Вот пример(может нерабочий, не тестил, т.к. сам скрипт на работе). Но чтобы понять сойдет. Пример с тех же яндекс-карт который я написал в текущей реализации. [JS] function route(id) { this.id = id; this.value = undefined; this.ended = undefined; } route.prototype.startCoords = [1,2]; route.prototype.routeExecute = function(coords) { var route = this; ymaps.route([this.startCoords[0],this.startCoords[1]], [coords[0],coords[1]], function(router) { route.value = router.getLength(); route.ended = true; }, function(error) { route.ended = true; }); } routesNeedArray = []; for(i in routesNeed) { //некий массив координат для построения маршрутов routesNeedArray.push(new route(i)); routesNeedArray[i].routeExecute(routesNeed[i]) } function allRoutesReady() { var el, result = {}; for(it in routesNeedArray) { el = routesNeedArray[it]; if(!el.ended) return false; result[el.id] = el.value; } return result; } interv = setInterval(function(){ if(result = allRoutesReady()) { clearInterval(interv); onRoutesResult(result ); } }, 200); onRoutesResult = function(routerResults){....} [/JS] Чур тапками за отсутствие var не кидаться, я думаю тут все понятно по коду, просто лень было писать var |
|
|
Zippovich |
18.1.2013, 4:44;
Ответить: Zippovich
Сообщение
#4
|
|
|
не - я в такие дебри не лезу - больше jquery мучаю - мне domready хватает пока.
|
|
|
||
|
Текстовая версия | Сейчас: 24.4.2024, 21:04 |