如何从递归函数返回对象?

时间:2016-01-14 15:19:05

标签: javascript json object return

我有以下功能:

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一起使用(即使返回与其他变量类型而不是对象一起使用)。

如何让它返回对象?

0 个答案:

没有答案