Мне нужно написать функцию в JavaScript, которая возвращает состояние от вызова асинхронной функции. Однако вызывающий абонент получает только значение, и функция обратного вызова не должна предоставляться. Я пытался что-то вроде:Как заблокировать асинхронные функции в JavaScript
function getState() {
var ret = null;
asyncCall("request",
function() { ret = "foo"; } // callback
);
while (ret === null)
; // block on the asynchronous call
return ret;
}
Однако, цикл никогда не кончится ...
Есть идеи? Спасибо.
Почему вы хотите заблокировать асинхронный вызов в первую очередь? Делать это не имеет смысла. – Tomalak 2010-12-03 13:30:21
@Tomolak: потому что это звонок от Firefox, и я не могу его изменить. Ожидается, что это займет не больше миллисекунд, я не хочу реорганизовывать весь мой другой код только из-за этого. – 2010-12-03 13:32:49
Можете ли вы опубликовать функцию, которая вызывает `getState()`? – Tomalak 2010-12-03 13:39:39