【发布时间】:2018-02-15 21:41:55
【问题描述】:
我正在尝试使用 promise 来调用函数 getTweets。 不使用 AJAX 调用,而是从 1 个 javascript 文件到另一个的简单承诺“调用”。 该功能有效,但我不断得到“未定义”。 我在 stackoverflow 上阅读了几十个问题,并花了几天时间 理解promise,但还是解决不了。
var Twit = require('twit') // Imports the Twitter library
require('dotenv').config() // to get the environment vars into the app
// This is the function:
function getTweets (screen_name) {
let T = new Twit({ /* <twitter key and token here> */ });
T.get('statuses/user_timeline', { screen_name: screen_name, count: 3}, function (err, data, response) {
let myTweets = [];
for (let i in data) {
let text = data[i].text;
myTweets.push(text);
}
return myTweets;
})
}
module.exports.getTweets = getTweets;
这是试图获得推文的承诺:
var promise = tweets.getTweets('dizid');
promise.then(
console.log(myTweets),
console.log(err))
// gives error: promise.then(
// ^
// TypeError: Cannot read property 'then' of undefined
非常感谢任何帮助。
【问题讨论】:
-
在您的问题中,顶部缺少某些内容
-
T是什么?getTweets函数定义在哪里? -
呃,你的
getTweets函数没有使用promise,这就是为什么你把返回值当作promise的时候会报错? -
你了解(异步)回调是如何工作的吗?你能单独用它们解决你的问题吗?
标签: javascript node.js promise