Wie zu blockieren, die auf der asynchronen Funktionen in JavaScript

Schreiben brauche ich eine Funktion in JavaScript, die gibt einen Staat, von dem Aufruf einer asynchronen Funktion. Aber der Anrufer erhält nur der Wert und keine callback-Funktion bereitgestellt werden. Ich habe versucht, so etwas wie:

function getState() {
    var ret = null;
    asyncCall("request",
        function() { ret = "foo"; } //callback
    );
    while (ret === null)
        ; //block on the asynchronous call
    return ret;
}

Aber, die Schleife wird nie zu Ende gehen...

Irgendwelche Ideen? Danke.

  • Warum wollen Sie blockieren den asynchronen Aufruf in den ersten Platz? Dies macht keinen Sinn.
  • weil es ein Aufruf zur Verfügung gestellt von Firefox und ich kann es nicht ändern. Es wird erwartet, dass in den meisten Millisekunden, ich will nicht zu überarbeiten alle meine anderen code, nur weil dieser.
  • Kannst du die Funktion, dass Anrufe getState()?
  • Es ist zu lang, um hier gepostet werden und es wird erwartet, genannt zu werden aus vielen Orten. Also, ich erwarte, dass diese Funktion einen Wert zurückgeben.
  • Hast du alle arbeiten Antwort für diese? Ich bin auch vor dem gleichen Problem und konnte keine passende Antwort bis jetzt. Einzige option, die ich hatte, ist nun die Umgestaltung des Codes an vielen Orten zu arbeiten, mit "async" - Methode.
InformationsquelleAutor Ryan Li | 2010-12-03
Schreibe einen Kommentar