Как мне вернуть значение в этом примере? - PullRequest
0 голосов
/ 20 июля 2011
function nicktoid(nick){
    if (typeof nick == "String") {
    var u = "http://xxxxxx.xxxx/" + nick ;
    var xhr2 = new XMLHttpRequest();
    xhr2.open('GET',u, true);
    xhr2.setRequestHeader('Cache-Control', 'no-cache');
    xhr2.setRequestHeader('Pragma', 'no-cache');

    xhr2.onreadystatechange = function() {
        if (xhr2.readyState == 4)  {
        txt2 = xhr2.responseText;
        var el2 = document.createElement("div");
        el2.innerHTML = txt2;

        anchors = el2.getElementsByTagName("a");
        for (var i=0;i< anchors.length;i++){
            if (anchors[i].parentNode.id == "profile_avatar"){

                anc.push(anchors[i]);
            }


        }

        var res = anc[0].href;
        var arstr = res.split("_");
        var resul = arstr[0].substr(6);

}

}



}
}

У меня есть вышеуказанный код.Как правильно вернуть var resul в никотидную рутину ??

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Используйте функцию обратного вызова, так как запрос Ajax выполняется асинхронно

function nicktoid(nick, callback){
    ...
    xhr2.onreadystatechange = function() {
        ...
        callback && callback(resul);
    }
}

nicktoid('foobar', function(resul) {
    console.log(resul);
});
2 голосов
/ 20 июля 2011

ajax в целом асинхронный.

Таким образом, вы не можете вернуть - вы должны использовать обратные вызовы.


Таким образом, вы можете nextFuntion(resul); и анализироватьВаша информация там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...