当我执行我的代码时,我不断收到错误'TypeError:回调不是函数' 这是相关的代码:
exports.isVideo = function(tweetId, callback) {
client.get('statuses/show/' + tweetId, function(err, tweet, res){
if(tweet.extended_entities){
if(tweet.extended_entities.media[0].type === 'video'){
console.log('true');
callback(true);
} else {
console.log('false');
callback(false);
}
} else {
console.log('false');
callback(false);
}
});
}
这是一个不同的文件(我需要在这个文件的顶部的第一个文件,这不是错误的原因):
ids.forEach(function(id){
console.log(id.twitterId);
twitterConverter.isVideo(id.twitterId, function(boolean){
if(boolean){
console.log('do something');
} else {
console.log('do nothing');
}
});
});
首先,请不要将此标记为重复,因为还有其他帖子具有相似的标题。我查看了它们,原因通常是没有传递回调函数,或者传递了太多参数,这不是这里的情况。
我不熟悉nodejs,所以也许我忽略了一些明显的东西,但我找不到这段代码的错误。
client.get()
来自this npm包。也许错误与此有关?
如果你能帮助我,我会很高兴。
答案 0 :(得分:1)
回调的调用者(在这种情况下是TableModel
方法)决定传递给回调的参数。您需要声明您的回调以匹配client.get
表示它将传递给回调的内容。您可以根据需要为参数命名(您使用的名称无关紧要),但它们将按client.get
决定的顺序获取值。
在这种情况下,client.get
使用您在代码中的三个参数调用回调,如client.get
中所示。所以您的function(err, tweet, res)
必须是这样的:
callback
代码是:
callback(null,null,true);