JavaScript-仅评估if语句的第一部分

色情

在我的代码中,我遍历了Twitch.tv用户名数组(称为用户),以对每个用户名进行API调用。该代码如下所示:

for(user in users){
  var username = users[user];
  console.log(username); //it iterates over every user in the array
  cbJSON(username); //that means this function is called for each user
}

cbJSON函数接受一个参数,即用户名,并进行API调用。然后,如果用户在线,离线或不存在,它应该写入控制台。为此,我使用if语句来评估data.stream是true,null还是undefined,如下所示:

function cbJSON(name){
  $.getJSON(url + name + cb, function(data){
  var ds = data.stream;

  //Problem: Only the initial if statement works.
  //The else if and else statements are NEVER called

  //Only this works
  if(ds){
    //handle user is online
      //show status, name, game, viewers, resolution

    console.log(name + ' is online.');

    //this is never called, even though it should be
  } else if(ds === null) {
    //handle user is offline
      //show status, logo and name
    console.log(name + ' is offline.');

    //this is never called, even though it should be
  } else {
    //handle user does not exist
      //error message: user does not exist
    console.log(name + ' does not exist.');
  }
  });
}

只要data.stream存在并且不是虚假的,ds应该评估为true。
当流脱机时,ds等于null。
当通道不存在时,ds等于未定义。

如果此if语句似乎得到评估,则只有第一部分。如果用户数组中的某人在线,则“用户名在线”会写入控制台。但是,阵列中的大多数用户都是脱机的,并且不存在,因此这些用户也应该以“用户名脱机”和“用户名不存在”的方式写入控制台。

这是一个相当简单的if语句,我不认为我会在这里遇到任何麻烦,但是我无法弄清楚为什么它不能按预期工作。我将在这里链接我的Codepen,因为问题可能出在其他地方:http ://codepen.io/erody-s/pen/WwagBo?editors=1011

还有一件事:if语句昨天起作用了,但是从那以后我改变了很多东西,包括如何调用cbJSON函数,并且此后它停止了正常工作。

我对JavaScript还是有些陌生,因此很可能我在这里遗漏了一些明显的东西,但是我无法自己弄清楚。相信我,我已经尽力了。

如果有人能够帮助我,我将感到非常高兴。

乔·托马斯

发现了错误。

分配ds后,您需要进行大量分配

var ds = data.stream;
var linkStream = ds.channel.url;
var logo = ds.channel.logo;
var displayName = ds.channel.display_name;
var game = ds.game;
var viewers = ds.viewers;
var resolution = ds.video_height;
var preview = ds.preview.small; 

您还说过,当拖缆脱机时,ds应该为null,对吗?好吧,在Javascript中,如果尝试获取null或未定义变量的属性,则会引发错误,并且该函数的其余部分将不会执行。因此,我为您固定了笔:http : //codepen.io/josepht404/pen/RaqbRw?editors=1012现在可以正常使用了:)。

我希望能有所帮助,谢谢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章