当我执行代码时,我不断收到错误“ 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');
}
});
});
首先,请不要将其标记为重复,因为还有其他标题相似的帖子。我仔细检查了它们,原因通常是没有传递回调函数或传递了太多参数,在这里不是这种情况。
我对Node.js还没有足够的经验,所以也许我忽略了一些显而易见的事情,但是我找不到此代码有什么问题。
client.get()
来自this npm软件包。也许错误与此有关?如果您能在这里帮助我,我将非常高兴。
最佳答案
回调的调用方(在本例中为client.get
方法)决定将哪些参数传递给回调。您需要声明您的回调以匹配client.get
所说的将传递给回调的内容。您可以为参数指定任意名称(使用的名称无关紧要),但是它们将按client.get
决定的顺序获取值。
在这种情况下,client.get
使用与function(err, tweet, res)
相同的代码来调用回调函数,因此您的callback
必须是这样的:
callback(null,null,true);
代码是:
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(null,null,true);
} else {
console.log('false');
callback(null,null,false);
}
} else {
console.log('false');
callback(null,null,false);
}
});
}
关于javascript - 错误:回调不是函数(nodejs),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38607942/