我有以下功能:
function get_(v,data) {
var xhttp,somevar;
xhttp=new XMLHttpRequest();
if(v!='output'){
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
if(v=='go') {
somevar = JSON.parse(xhttp.responseText);
get_jurl('get',somevar);
}
if(v=='get') { get_jurl('output', JSON.parse(xhttp.responseText)[Math.floor(Math.random() * 4)]) }
}
}; }
if(v=='go') {xhttp.open("GET", 'https://someurl', true)}
else if(v=='get') {xhttp.open("GET", 'https://otherurl', true)}
else if(v=='output') {return data}
xhttp.send();
}
它只是一个具有多种用途的伪递归函数。我们的想法是你进行get_('go')
调用,它将通过get_('get', somevar)
调用重新调用,该调用获取对象的JSON列表,最后通过get_('output',data)
调用重复自身,应该返回data
变量(对象)。
但它没有。如果你调用get_('go')
,它将返回undefined而不是对象。如果您将return data
语句更改为函数内的console.log(data)
,则会看到该对象。但它不能与return
一起使用(即使返回与其他变量类型而不是对象一起使用)。
如何让它返回对象?