как ждать с setTimeout, пока переменная не загрузится и, в то же время, получить HTTP-запросы! - PullRequest
5 голосов
/ 11 июля 2010

Я сделал функцию JavaScript, чтобы каждые 100 мс проверять, загружена ли глобальная переменная. Когда переменная будет загружена, функция вернет значение переменная, как показано ниже. В моем коде я использую HTTP-сервер в JavaScript, и переменная будет загружена, когда конкретный HTTP-запрос с конкретными Заголовки прибывают на мой сервер.

function checkVariable()
{
    if ( myvar != null )
    {
            return myVar;
    }
    else
    {
            window.setTimeout("checkVariable();",100);
    }
} 

Я использую эту функцию в следующем фрагменте кода:

// arithmetis operations... [1]

myVar = checkVariable();

// arithmetic operations that use myVar [2]

myVar запускается с нуля. Проблема в том, что арифметические операции в [2] выполняются до того, как myVar получит свое значение. Вместо этого я хочу, чтобы мой код ждал, пока myVar получит его значение, а затем продолжить операции.

Прежде чем пытаться использовать функцию setTimeout, я пытался заставить код ждать, используя цикл while, но проблема заключалась в том, что HTTP-сервер не мог получить HTTP-запрос из-за непрерывного выполнения цикла while!

Может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо!

1 Ответ

11 голосов
/ 11 июля 2010

Я бы, вероятно, сделал оставшиеся арифметические операции обратным вызовом.Что-то вроде:

function checkVariable()
{
    if ( myvar != null )
    {
            computeVariable(myVar);
    }
    else
    {
            window.setTimeout("checkVariable();",100);
    }
} 

Тогда:

// arithmetis operations... [1]

myVar = checkVariable();

function computeVariable(myVar) {
  // arithmetic operations that use myVar [2]
}
...