En JavaScript frontale, j'ai une fonction funcA
qui exécute normalement dès que le client reçoit un message particulier A
.Conditionnellement exécution de la fonction de délai
Il est possible que le serveur envoie un autre message B
avant en envoyant A
. Lorsque cela se produit, le client recevra deux messages: d'abord B
puis A
, et une autre fonction funcB
(déclenchée par B
) sera exécutée avant funcA
.
Maintenant, est-il une façon élégante de retarder l'exécution de funcA
lors de la réception A
, si funcB
exécute d'abord?
Certains pseudo-code ci-dessous pour illustrer l'idée:
...
// 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
...
Je peux penser à utiliser la combinaison d'un « drapeau » et chèque conditionnelle avant chaque exécution de funcA
, ce qui ne semble pas très élégant pour moi.
S'il vous plaît noter: cette question est pas sur la façon de retarder l'exécution d'une fonction (qui est habituellement obtenue en utilisant setTimeout
), au contraire, il demande un modèle de conception/structure donnée une logique de code particulier.
Quel code avez-vous maintenant? Pouvez-vous le montrer? – putvande
Programmation et élégance ne sont pas toujours les meilleurs amis. L'utilisation d'un drapeau dans ce cas est parfaitement acceptable. Je le ferais sans considération dans ce scénario. – Archer
façon si vous avez un message B ne pas mettre meassage A dans le cadre de l'appel B seulement funcB avec funcA callback –