【发布时间】:2018-04-05 20:55:02
【问题描述】:
我在这里的最后一段代码上方有三个链式 promise:getChannel、getPlaylist 和 getVideoViews。
module.exports = {
runScript: function(channelID, accessToken, callback) {
YoutubeAPI.authenticate({
type: "oauth",
token: accessToken
});
getChannel(channelID)
.then(getPlaylist)
.then(getVideoViews)
.then(function(views){
callback(views);
})
}
}
我有另一个文件 user.js,它依赖于 getVideoViews 的解析(这是一个视频视图计数数组)。 user.js 中的代码如下:
youtuber1.runScript(channelID, accessToken, function(error, response, views){
console.log(views);
});
但是,控制台日志会导致未定义。链接承诺让我很容易一个接一个地执行这些函数,但我现在很迷茫如何将最后一个函数的解析传递回我的 user.js。
我是一个有承诺和回调的初学者,希望得到一些帮助!
【问题讨论】:
-
这与 Promise 或回调无关,它只是知道如何调用函数:p 你使用
callback(views);调用回调 ... vs 回调function(error, response, views)....回调期望视图是第三个参数,您将其作为第一个参数传递 - 将function(error, response, views){更改为function(views){或callback(views);更改为callback(null, null, views); -
您确定要混合使用 Promises 和 Callbacks 吗?您可以返回承诺链并在您的其他文件中调用
then()。 -
aww 去@JaromandaX,谢谢!现在工作 100%。有时我希望我身边有像我这样的人在我做一些愚蠢的事情时告诉我,修复是一个 2 秒的修复,而不是花太多时间试图弄清楚一些愚蠢的事情!
-
我第二个@Mark_M。您在这里将回调与承诺混合在一起。虽然它可能“有效”,但不一定是一种好习惯。
标签: javascript node.js callback promise google-cloud-functions