【问题标题】:Hand over variable from a function inside node.js + twit package从 node.js + twit 包中的函数移交变量
【发布时间】:2018-04-26 05:55:04
【问题描述】:

我正在使用包 twitinsite 和 node.js 应用程序从 Twitter 获取一些 JSON 数据。

我尝试了几个小时来管理如何将变量从函数内部移交给外部。

var tweets;
T.get('followers/ids', { screen_name: 'tolga_tezel' },  function (err, data, response) {
  tweets = data;
})
console.log(tweets); // -> undefiend

//data is the JSON I get from the Twitter Server. Console.log(data) shows it.

我知道它是因为异步的东西,但我不知道如何管理它。

希望你能帮到我

【问题讨论】:

    标签: javascript node.js asynchronous twitter


    【解决方案1】:

    将你的 console.log 放在你的回调函数中。 如果您想进一步处理,请将该代码放入您的回调函数中。 还有其他方法可以使用 javascript 的异步特性。 可以使用 async.js 库,非常好用。

    【讨论】:

    • 你能给我举个例子吗? ://
    • Async.js 瀑布可以在这里为您提供帮助。 caolan.github.io/async/docs.html#waterfall
    • var 推文; T.get('followers/ids', { screen_name: 'tolga_tezel' }, function (err, data, response) { tweets = data; console.log(tweets); //把你的代码放在这里访问 tweets 变量 } )
    • 但我想在函数外部而不是内部访问变量。
    • 无论如何,您都必须等到您的函数获取数据。您可以使用回调或承诺来做到这一点。但这是 Async 的工作方式。如果你想在这个块之外访问它,那么你可以使用基于 promise 的结构,在里面的 'then' 方法中你可以编写进一步的代码。
    【解决方案2】:

    解决您的问题的最简单方法可能是将 Promises 与 Twit 的承诺包一起使用 (https://www.npmjs.com/package/promised-twit)

    在您的代码中,它看起来像这样:

    var Twit = require('promised-twit');
    
    var T = new Twit({
      consumer_key: '...',
      consumer_secret: '...',
      access_token: '...',
      access_token_secret: '...'
    })
    
    T.getFollowersIds({ screen_name: 'tolga_tezel' })
      .then(function(data) {
        console.log(data);
      });
    })
    

    当然首先通过运行npm install --save promised-twit安装包

    您当前的代码在您注销时没有返回任何内容的原因是因为 console.log 在 twitter API 返回来自 T.get() 的任何响应之前运行

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。 对我有用的是(也许任何人都在搜索这个):

      var tweets = T.get('followers/ids', { screen_name: 'tolga_tezel' })
      

      调用 , function. (x,z) 会以某种方式吞下数据 - 不知道那里到底发生了什么。

      但是,如果您想调用错误处理程序或其他函数 改用.catch().then() 例如

      T.get('followers/ids', { screen_name: 'tolga_tezel' }).then((response) => console.log(response.data)
      

      【讨论】:

        猜你喜欢
        • 2019-04-10
        • 2016-03-11
        • 2021-12-12
        • 1970-01-01
        • 2019-06-21
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        • 2014-04-28
        相关资源
        最近更新 更多