У меня есть объект Javascript, для которого требуется 2 вызова внешнего сервера для создания его содержимого и делать что-либо значимое. Объект построен таким образом, что экземпляр экземпляра его автоматически будет выполнять эти 2 вызова. В двух вызовах используется общая функция обратного вызова, которая работает с возвращенными данными, а затем вызывает другой метод. Проблема в том, что следующий метод не следует вызывать до тех пор, пока оба метода не вернутся. Вот код, который я реализовал в настоящее время:
foo.bar.Object = function() {
this.currentCallbacks = 0;
this.expectedCallbacks = 2;
this.function1 = function() {
// do stuff
var me = this;
foo.bar.sendRequest(new RequestObject, function(resp) {
me.commonCallback(resp);
});
};
this.function2 = function() {
// do stuff
var me = this;
foo.bar.sendRequest(new RequestObject, function(resp) {
me.commonCallback(resp);
});
};
this.commonCallback = function(resp) {
this.currentCallbacks++;
// do stuff
if (this.currentCallbacks == this.expectedCallbacks) {
// call new method
}
};
this.function1();
this.function2();
}
Как вы можете видеть, я заставляю объект продолжать работу после того, как оба вызова вернулись с помощью простого счетчика, чтобы подтвердить, что они оба возвращены. Это работает, но кажется очень плохой реализацией. Я только работал с Javascript в течение нескольких недель, и мне интересно, есть ли лучший способ сделать то же самое, что я еще должен наткнуться.
Спасибо за любую помощь.