Мы используем GWT RPC, который также имеет асинхронный API. Решение, которое мы в настоящее время используем для последовательного выполнения нескольких асинхронных вызовов, - это цепочка вызовов:
callA(function(resultA) {
callB(resultA, function(resultB) {
callC(); //etc.
});
});
Этот вложенный подход позволяет достичь того, чего вы хотите, но он многословен и труден для чтения новичкам. Один из подходов, который мы исследовали, - это добавление вызовов, которые нам нужно сделать, в стек и выполнение их по порядку:
callStack = [
callA(),
callB(),
callC()
];
callStack.execute();
Тогда callstack справится:
- Вызов вызовов в последовательном режиме (т. Е. Проводка в первом примере)
- Передача результата от одного вызова к следующему.
Однако, поскольку в Java нет ссылок на функции, для каждого вызова в стеке вызовов требуется анонимный класс, поэтому мы остановились на таком решении. Тем не менее, у вас может быть больше успеха в JavaScript.
Удачи!