是的

我试图使用“ Twitter”模块(在npm上找到,使用npm install twitter安装)从给定的screen_name中获取朋友列表,但是,我的程序一直失败,而且我不确定为什么。在这个时间点上,它所要做的只是从朋友JSON对象中包含的朋友列表中摇摇欲坠,但是由于某种原因,它不起作用。

我不知道为什么。该代码包含在下面。如果您需要提出问题,请发表评论。

function readTokenFromDisc(){ //Used to save on requests.
  return new Promise(function(resolve, reject){
    fs.readFile('bearerToken.txt', 'utf8', function(error, data){
      resolve(data);
    });
  });
}

function buildClient(bToken){
  return new Promise(function(resolve, reject) {
    var client = new Twitter({
      consumer_key: process.env.TWITTER_CONSUMER_KEY,
      consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
      bearer_token: bToken
    });
    resolve(client);
  });
}

function grabTwitterFollowers(client){
  return new Promise(function(resolve, reject) {
    client.get('friends/list', {screen_name: 'POTUS'}, function (error, tweets, response){
      if(error){
        console.log(error);
      };
      resolve(tweets);
      console.log(tweets) //debug
      console.log(response) //debug
    });
  });
};

function initTwitter(){
  console.log('Test!') //debug, triggers
  readTokenFromDisc().then(function(contents){
    console.log('Othertest!') //debug, triggers.
    buildClient(contents);
  }).then(function(client){
    grabTwitterFollowers(client);
  }).then(function(following){
    console.log(following) //debug, output is 'Undefined'.
  });
}

最佳答案

您缺少回报。

grabTwitterFollowers(client);buildClient(contents);

initTwitter中应该

return grabTwitterFollowers(client);return buildClient(contents);

既然这样,就为连锁店带来了希望。否则,promise将沿undefined传递,函数的结果不返回。

09-25 17:35