我已经在本地测试了一个reddit bot一段时间了,并让它在本地工作。所以现在我试图在OpenWhisk上调用它。我的麻烦似乎出现的路线是:
r.getInbox( {"filter":"mentions", "append":false } ).then( newMentions, console.err );
永远不会触发newMentions。我已经在其中创建了第一行console.log,并且我已经用console.log替换了newMentions。
此行之前和之后的console.logs被调用就好了,并且getInbox在我的本地机器上工作正常,应该可以正常工作。我在任何地方都没有收到任何错误,即使是上面一行中的console.err。
所以我目前的猜测是我的OpenWhisk实例在getInbox可以解决之前以某种方式结束。是对的吗?我把它设置为60s / 512mb,它不会接近60s,我无法想象它需要512mb。那么......我是否需要手动强制OpenWhisk等待承诺解决?我该怎么办?或者是否有其他错误我没有看到?
要明确:我正在使用snoowrap进行reddit。 r是一个合适的snoowrap对象,getInbox是一个snoowrap函数,我很确定我正确使用它,它返回一个代表收件箱的json数据的承诺。而且,即使它是空的,仍然应该调用newMentions,对吧?
答案 0 :(得分:3)
将承诺返回给主函数
function main(){
return r.getInbox( {"filter":"mentions", "append":false } ).then( newMentions, console.error );
}
这样OpenWhisk就会等待Promise
确保你的解析函数newMentions
或拒绝函数返回一个JSON对象,它将是Action的结果
同样console.err
不是函数console.error