NodeJS - setTimeout的替代方案

时间:2016-07-17 13:49:03

标签: javascript node.js function mongoose synchronization

首先,对于模糊的标题感到抱歉。我不知道如何在标题中总结我的问题。

我正在学习NodeJS&表达并决定构建一个 TwitchTV聊天机器人作为一个小练习。为此我正在使用tmijs

以下是我目前面临的问题:

function getActivatedChannels() {
  var channels = [];
  User.find(function(err, users) {
    if (err) console.error(err);
    for (var i = 0; i < users.length; i++) {
      if (users[i].activated) {
        channels.push(users[i].name);
      }
    }
    console.log(channels);
  });
  return channels;
}

//tmi.js options
var options = {
  options: {
    debug: true
  },
  connection: {
    cluster: 'aws',
    reconnect: true
  },
  identity: {
    username: credentials.tmijs.username,
    password: credentials.tmijs.password
  },
  channels: getActivatedChannels()
};

var client = new tmi.client(options);
client.connect();

这里的问题是getActivatedChannels()似乎需要太长时间。在第一个函数解析之前调用client.connect(),导致客户端无法连接到任何通道。解决这个问题的方法是将setTimeout()中的var选项后的所有内容包装起来,但这似乎不是解决此问题的好方法。

有什么更好的方法可以解决这个问题?

0 个答案:

没有答案
相关问题