OpenWhisk / Node - 承诺无法解决

时间:2018-02-14 03:03:21

标签: node.js promise ibm-cloud serverless openwhisk

我已经在本地测试了一个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,对吧?

1 个答案:

答案 0 :(得分:3)

将承诺返回给主函数

function main(){
  return r.getInbox( {"filter":"mentions", "append":false } ).then( newMentions, console.error );
}

这样OpenWhisk就会等待Promise

确保你的解析函数newMentions或拒绝函数返回一个JSON对象,它将是Action的结果

同样console.err不是函数console.error