2015-05-17 2 views
0

У меня есть эта проблема, поэтому я хочу вернуть значение, полученное после XMLHTTPRequest(), возможно ли это? Если нет, как бы я хотел достичь такой же общей идеи? Вот что я до сих пор (очевидно, не работает).Возврат Javascript после XMLHTTPRequest()

function something(url) { 
    var temp = getPage(url); 
    console.log(temp); 
} 

function getPage(url) { 
    var x = new XMLHTTPRequest(); 
    x.onload = function() { 
      var html = x.responseText; 
      //CODE TO PARSE HTML TEXT 
      var variable = SOMETHING PARSED FROM HTML 
      return variable; 
    } 
    x.open("GET", url); 
    x.send(); 
} 

ответ

1

Это парадигма программирования, с которой приходится сталкиваться каждому новому разработчику javascript.

Из-за асинхронного характера javascript функции, как правило, не передают значения обратно через операторы return, но вместо этого значения передаются обратно через методы обратного вызова.

function something(url) { 
    getPage(url, function(temp) { 
     console.log(temp); 
    }); 
} 

function getPage(url, callback) { 
    var x = new XMLHTTPRequest(); 
    x.onload = function() { 
      var html = x.responseText; 
      //CODE TO PARSE HTML TEXT 
      var variable = SOMETHING PARSED FROM HTML 
      callback(variable); 
    } 
    x.open("GET", url); 
    x.send(); 
} 
+0

Если мне нужно несколько обратных вызовов, например несколько функций, которые используют XMLHTTPRequest друг за другом, я бы просто сделал один и тот же «обратный вызов» для каждой функции? – Tomato

+0

например ... somefunction (url, function (res) {callback (res);}); – Tomato

+0

Ничего, получилось. Благодаря! – Tomato

Смежные вопросы