Javascript异步问题

时间:2017-02-08 01:52:55

标签: javascript

抱歉,如果以前曾经问过,但我找不到另一个回答我的问题。我试图从一个从AJAX调用中获取数据的函数设置一个变量。但是,在我获得数据之前,该功能仍在继续运行。我怎么能避免这个? 如果您运行以下功能,您可以看到数据即将发布,但在运行RDID值的console.log之前。我需要设置RDID值。我也很欣赏一些资源来更好地学习这一点。

var RDID = getData('https://domain.com?dataRequest', rdProviderLookup);

function getData(url, callback, optional) {
    var argLength = arguments.length;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.send(null);
    xhr.onreadystatechange = function () {
    var DONE = 4; 
    var OK = 200; 
    if (xhr.readyState === DONE) {
        if (xhr.status === OK) {
            if (argLength == 3) {
                    callback(xhr.responseText, optional);
                } else {
                    callback(xhr.responseText);
                    }
            } else {
                console.log('Error ' + xhr.status);
                callback('Error');
            }
    }
    };
}
function rdProviderLookup(rdData) {
    var rdData = JSON.parse(rdData);
    var a = JSON.stringify(rdData.physicalStoreList[0].physicalStoreIdentifier.uniqueID);
    console.log('a= ' + a);
    return a;
}
console.log('RDID ' + RDID);

0 个答案:

没有答案