微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调用时Javascript对象返回空

如何解决调用时Javascript对象返回空

一段我的代码

const channels = fauna.paginate(q.Match(q.Index("channels"),"true")) // Query FaunaDB database for channel list => create constant called users containing results
const channelList = channels.each(function (page) {
  // Logs the page's contents,// for example: [ Ref(Collection("test"),"1234"),... ]
  console.log(page);
});

可以正常工作并按照预期的方式运行。但是,当我尝试从代码中的其他地方调用“ channelList”时,它将返回{} 第一段代码中的console.log也返回了应该的内容,因此我认为第一段代码没有任何问题。

这是我尝试调用此对象的一段代码

  let options = {
    options: {
      debug: config.twitchConfig.options.debug
    },connection: {
      reconnect: config.twitchConfig.options.reconnect,secure: config.twitchConfig.options.secure
    },identity: {
      username: config.twitchConfig.connection.username,password: config.twitchConfig.connection.password
    },channels: [JSON.stringify(channelList)] // Attempt to call here,Returns {} (Empty object)
  };

有什么我想念的吗?首先有可能吗?如果不可能的话,我可以使用另一种方法来达到相同的结果吗?

编辑:据我所知,channelList是基于页面响应的,并且似乎页面响应是该函数的私有特性,无法在该函数外部引用。我该怎么做才能使其在函数外部可引用或创建可在包含相同信息的函数外部访问的常量/变量

解决方法

channelList不是函数,更像是打印通道的函数的结果..因此,在打印后分配给它的是结果。 尝试假定它为函数,然后调用它:

const channelList = ()=>{
 channels.each(function (page) {
  // Logs the page's contents,// for example: [ Ref(Collection("test"),"1234"),... ]
  console.log(page);
});
};

channelList();

假设代码本身完成了您想要的工作,这应该可以完成工作

,

经过反复试验,我的回答比我或我所说的其他任何人都简单。

如果您遇到与我相同的问题,这里是逐步解决问题的指南。

  1. 使用变量而不是常量
  2. 在设置变量之前,将var channelList;放置在设置变量的代码上方的某个位置,以声明变量
  3. 使用简单的channelList = page
  4. 设置先前声明的变量
  5. console.log(channelList);只是为了确保一切正常
  6. 最后,在需要的地方调用变量,瞧!您已正确调用了变量,并且该变量不会返回{}或Undefined或[Object Object]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。