J'ai dû modifier le flux d'origine, le déplacer et le chaîner vers l'onSuccess() de l'appel asynchrone.
A l'origine, le flux est
- utilisateur clique sur un bouton Ok de dialogue poopup
- validate (everthing est la validation de la fin avant), si en cas d'erreur de validation, exception throw et erreur d'exposition. diaglog n'est pas fermé.
- En cas de validation réussie, procédez au traitement des données et fermez la boîte de dialogue.
Maintenant Dans un nouveau scénario, le n ° 2 de validation est modifié pour exiger un appel asynchrone à l'arrière-plan. DonC# 3 doit être déplacé en chaîne vers le callback de la méthode validate.' extraits de code ci-dessous
public void onValidationDataReady(List<Long> existingTests) throws ValidationException {
if (!existingTests.isEmpty()) {
throw new ValidationException("The entered name has already been used.");
}
//only after the validation do we proceed with the original OK click
proceedOkClick(testNameField.getValue());
}
public void proceedOkClick(String data) {
// proceed only after the async call
if (callback != null) {
callback.onDialogResult(true, data);
}
clearDialog();
}
public boolean validateInputs() throws ValidationException {
//async call to get data from back end.
//pass in a Callback
testNameValidator.validate(testNameField.getValue(), new DataReadyCallback<List<Long>>() {
@Override
public void onDataReady(List<Long> existingTests) {
onValidationDataReady(existingTests);
}
});
return true;
}
//The call back interface.
public interface DataReadyCallback<T> {
void onDataReady(T data);
}
Salut Taras, considèrent Veuillez le code follwing snipet et laissez-moi savoir comment cela fonctionnera comme vous le suggérez, { \t Etape 1 someMethod public void(); \t \t étape2; // Voici un appel asynchrone \t \t étape3; // Je souhaite effectuer cette étape uniquement après la fin de l'étape 2. Que dois-je dire à GWT d'attendre que l'appel asynchrone soit terminé? Je sais que nous allons à l'encontre du comportement asynchrone mais mon cas d'utilisation en a besoin. – Bhavesh