У меня есть функция на JavaScript, написанная таким образом, я не могу изменить:
function doSomething() {
doFirst();
(...)
}
Первая функция внутри doSomething отправляет пакет через WebSocket и должна ждать ответа, чтобы вернуться.Итак, другими словами, мне нужно doFirst, чтобы дождаться этого ответа, прежде чем делать (...).
В качестве первой идеи я подумал, что мог бы использовать обратные вызовы для вызова (...), когда doFirst завершен, но я не могу этого сделать, потому что Я не могу ничего написать на doSomething , поэтому следующий пример вообще не будет возможен:
function doSomething() {
doFirst(function() {
(...)
});
}
Итак, с этим ограничением я должен иметь возможность написать что-то внутри doFirst (но, опять же, не doSomething), чтобы достичьэто поведение.
Если я просто объявлю обратный вызов onmessage WebSocket, (...) будет выполнено до того, как сокет получит ответ, и если я использую что-то вроде:
while(!received) { }
Конечно, браузерзависает, и даже если я получу ответ, я не смогу продолжить.