Функции обратного вызова в API Javascript / Google Hangouts - PullRequest
1 голос
/ 19 октября 2011

Так что я возился с API Google Hangouts, и есть функция addStateChangeListener (callback), которая позволяет зарегистрировать функцию обратного вызова, которая будет вызываться при изменении состояния приложения.

ПримерФункция обратного вызова, которая может быть зарегистрирована:

function onStateChanged(add, remove, state, metadata) {
  state_ = state;
  metadata_ = metadata;

  if (<some boolean>) {
    doFunction(); //this function alters the state
  }

  //more stuff below
}

Мой вопрос: если бы doFunction () сделал что-то, что изменило состояние, (и вызвал addStateChangeListener), onStateChange был бы вызван снова перед остальной функцией после ifЗаявление побежал?Или же первая итерация onStateChange () сначала запустится до своего завершения, а затем снова будет вызван onStateChange.Или он может просто полностью игнорировать оставшуюся часть первой функции onStateChange и просто вызывать onStateChange, когда doFunction изменяет состояние?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 19 октября 2011

Если посмотреть на ссылку на Google Hangouts API , может показаться, что он снова запустит функцию обратного вызова, если вы измените состояние.В частности:

обратный вызов будет вызываться для изменений в общем состоянии, которые являются результатом вызовов submitDelta, сделанных из приложения локального участника.

Это определенно не будет игнорировать остальныепервой функции обратного вызова, и она, вероятно, (хотя это может не произойти, например, если она проверяет с помощью Ajax-вызова, что состояние фактически изменилось) также запускает вторую немедленно, не дожидаясь первой функции обратного вызова, чтобыКонец.Если вы хотите убедиться, что первая функция всегда завершается до вызова второй, вы всегда можете отложить ваш вызов, чтобы изменить состояние с помощью window.setTimeout() вокруг вызова на doFunction().Задать задержку в 1 миллисекунду будет достаточно.

...