В интерфейсе JavaScript у меня есть функция funcA
, которая обычно выполняет , как только клиент получает конкретное сообщение A
.Условное выполнение функции задержки
Возможно, что сервер отправит другое сообщение B
до отправка A
. Когда это произойдет, клиент получит два сообщения: сначала B
, затем A
, а другая функция funcB
(сгенерирована B
) будет выполнена до funcA
.
Теперь есть элегантный способ, чтобы задержать выполнение funcA
при получении A
, если funcB
выполняет первый?
Некоторые псевдо-код ниже, чтобы проиллюстрировать идею:
...
// called upon receiving msg `A`
// but need to delay its execution if receiving `B` and executing funcB first
function funcA(param) {
...
}
// called upon receiving msg `B`
function funcB(param) {
...
}
...
// receiving messages from server
var msg = JSON.parse(...);
if (msg.type === 'A') {
funcA(msg.data);
}
else if (msg.type === 'B') {
funcB(msg.data);
}
else if (msg.type === 'C') {
...
}
// deal with other types of message
...
я могу думать, используя сочетание «флага» и условной проверки перед тем каждый выполнение funcA
, который, кажется, не очень элегантный для меня.
Пожалуйста, обратите внимание: этот вопрос не о том, как задержать выполнение функции (которая обычно достигается путем использования setTimeout
), вместо этого, он просит дизайн шаблона/структуры данной конкретной логики кода.
Какой код у вас сейчас? Вы можете это показать? – putvande
Программирование и элегантность - не всегда лучшие друзья. Использование флага в этом случае вполне приемлемо. Я бы сделал это без рассмотрения в этом сценарии. – Archer
путь в случае, если у вас есть сообщение B, чтобы не поставить meassage A как часть вызова B только funcB с обратным вызовом funcA –