Недавно я столкнулся со знакомой ошибкой синхронизации javascript / jQuery и потратил слишком много времени на ее отладку.Мне нужен более разумный путь отладки для этой проблемы.
В частности, моя проблема заключалась в том, что пользовательские входные данные должны были вызывать вызов базы данных Mongo, а результаты отправлялись после небольшой математики,на отображаемые выводы.Но отображаемые результаты были безумно неправильными.Однако, как только я добавил точку останова FireBug, проблема ушла.В тот момент я знал, что у меня проблема с синхронизацией, но не как ее решить.
Вот соответствующие фрагменты кода перед ошибкой:
handleDataCallBack : function(transport) {
var response = $.parseJSON(transport);
if(!hasErrors) { this.updatePage(response); }
},
accessDatabase : function(){
var params = { ... };
DAL.lookupDatabaseInfo(this.handleCallBackOutputPanel, this, params);
},
calculateValues: function() {
// some numerical values were updated on the page
}
onDomReady : function() {
// ...
//bind drop-down select change events
$('#someDropDown').change(function() {
me.accessDatabase();
me.calculateValues();
});
}
Чтобы решить эту проблему, всеМне нужно было переместить метод «возложить значения» из onDomReady
внутри обратного вызова:
handleDataCallBack : function(transport) {
var response = $.parseJSON(transport);
this.calculateValues();
if(!hasErrors) { this.updatePage(response); }
},
Проблема заключалась в том, что база данных не ответила до того, как начались вычисления.Конечно, это легко заметить в ретроспективе.Но какие методы я могу использовать для отладки асинхронных проблем синхронизации в javascript / jQuery в будущем?Это кажется далеко за пределами контекста инструментов IDE.И FireBug не помог.Существуют ли инструменты для отслеживания асинхронных проблем веб-разработки?Или, может быть, некоторые проверенные временем методы?