从那时起,Superagent没有回归价值

时间:2018-01-29 09:11:28

标签: reactjs fetch axios es6-promise superagent

has_rejected_advisories=false

我的结果是:

res.body[i]

但我无法在此函数之外使用superagent,即我希望a = superagent.get(URL).then((res) => { for(let i in res.body) { if(i==='has_rejected_advisories') { console.log(i + "="+res.body[i]); } } }) .catch((err) => err.message)); if(a===false){/*do this*/} 函数在布尔变量中返回此值以在其他地方使用它。

离。

{{1}}

3 个答案:

答案 0 :(得分:1)

这是因为superagent.get(url)调用是异步的。 a的值为Promise

由于这是异步的,if (a === false)实际上是在函数体传递给.then之前执行的。您需要将此逻辑移至.then函数,或者如果您喜欢同步查看语法,请使用async/await之类的内容。

答案 1 :(得分:1)

除了jerelmiller的好建议,你需要注意以下几点:

试试这个:

创建一个全局变量,假设它是一个字符串

 var mysares = ""

这个例子只会带回1个字符串!不是单一元素。此外,如果你不能让标准的Fetch()工作,不要尝试其他方法,如axios或superagents。现在像我们这样使用全球:

  superagent.get(URL).then((res) => {
      for(let i in res.body) {
        if (i==='has_rejected_advisories') {
          //Add comments as will help you
          //to explain to yourself and others 
          //what you're trying to do
          //That said if this iteration produces
          //correct data then you're fine
          //push my result as a string
          mysares = res.body[i];
          //infact what's in row 1?
          mysares = res.body[0];
          //Actually I code my own JSON!!
          mysares = res.body[1];
          console.log(i + "="+mysares);
        }
      }
    })
    .catch((err) => err.message));

现在你可以做任何事情:

 if(mysares===false){/*do this*/
   alert(playDuckHunt());}

注意事项: res.body[i]是一个迭代 你不能在函数之外使用它 因为: 它是该功能的本地 你不知道' i'即使你可以使用它,因为你将在你的循环之外

最后一件事: 循环遍历循环或数组等。 所以(在现实世界中)你不能只是请求循环的值 除非您同意要发布的数据的位置, 类型和桶(它将在何处显示)。

希望这有帮助!

PS>我们需要知道&has 39jected_advisories'在JSON中,所以请将您的json url发送给我们,因为它必须是列/ obj标题名称。或者它是任何旧的' a' var a可以是你的" false"

答案 2 :(得分:0)

在构造函数中:

this.state = {a:null};

在某些功能中:

superagent.get(URL).then(
(res) => {for(let i in res.body) 
{
   if(i === 'has_rejected_advisories')
     {
        this.setState({a:res.body[i]})
     }
 }
  }).catch((err)=>(err.message));

在渲染中:     的console.log(this.state.a);

在then()内部,可以使用状态变量来使用该值,但是有许多场景我们无法使用它们,比如我们想要在构造函数下执行所有操作,即初始化状态变量,调用superagent并更改状态变量和使用状态变量。