Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have few functions, which calls another (integrated functions in browser), something like this:

function getItems () {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://another.server.tld/", true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            items = $("a[href^=/courses/]", xhr.responseText);
        }
    };
    xhr.send();
}

As I don't want to write more code inside and make each logical functionality separated, I need this function to return variable items.

I know there can happen some accidents (network/server is not available, has long-response...) and the function can return anything after gets data from the server or timeout occurs.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
147 views
Welcome To Ask or Share your Answers For Others

1 Answer

This seems be an async request. I don't think you will be able to return data from this function.

Instead, you can take a callback function as an argument to this function and call that callback when you have the response back.

Example:

function getItems (callback) {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://another.server.tld/", true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            callback(xhr.responseText);
        }
    };
    xhr.send();
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...