positionService.call(new PositionCallback(){ onPositionUpdate(Position position)
{
this.position=position;
if (isLoaded){
refreshDataWithPosition();
}
});
dataService.call(new DataCallback(){ onDataUpdate(Data data)
{
//does this need synchronization?
updateTable(data,position);
isLoaded=true;
});
У меня есть следующий код выше. Он загружает позицию геолокации GPS и все данные одновременно. Если обновление данных GPS впервые обновит таблицу, это будет учтено. Если во время обновления GPS-данных он будет вызывать refreshDataWithPosition, чтобы обновить его содержимое. Я хочу обновить таблицу с позицией или без нее для более отзывчивого опыта.GWT однопоточные обратные вызовы
Как работает обратный вызов GWT async с одиночной потоковой обработкой (или, возможно, многопоточным механизмом javascript)? Опасность здесь - вызов обратного вызова, который вызывается после завершения finalTable, но перед значением isLoaded установлено значение true. В этом случае таблица не будет обновляться данными позиции.
Это не совсем то, что я хочу, хотя. Я хочу загрузить сначала с или без позиции, чтобы лучше реагировать. Если позиция появится позже, я хочу обновить данные. –
Также в соответствии с этим http://stackoverflow.com/questions/9999056/are-event-handlers-guaranteed-to-complete-before-ajax-callbacks-are-invoked обратный вызов ajax никогда не прерывает JS-код, поэтому синхронизация не должна быть проблемой в однопоточных JS-машинах –
«Я хочу сначала загружать или не иметь позицию, чтобы иметь лучшую отзывчивость» - так вызывать updateTable в source2callback, затем в join; «обратный вызов ajax никогда не прерывает JS-код» - вот что я сказал. – ArtemGr