0

我已经在本地测试了一段时间的 reddit 机器人,并让它在本地工作。所以现在我试图在 OpenWhisk 上调用它。我的麻烦似乎出现的那一行是:

r.getInbox( {"filter":"mentions", "append":false } ).then( newMentions, console.err );

newMentions 永远不会被触发。我将其中的第一行设置为console.log,并将newMentions 替换为console.log。

此行之前和之后的 console.logs 都可以正常调用,getInbox 在我的本地机器上工作正常,在这里应该工作正常。我在任何地方都没有收到任何错误,即使来自上面一行中的 console.err。

所以我目前的猜测是我的 OpenWhisk 实例在 getInbox 可以解决之前以某种方式结束。是对的吗?我将它设置为 60s/512mb,它不会占用 60s 附近的任何地方,我无法想象它会占用 512mb。所以...我是否需要手动强制 OpenWhisk 等待承诺解决?我该怎么做?还是我没有看到其他一些错误?

需要明确的是:我在 reddit 上使用 snoowrap。r 是一个正确的 snoowrap 对象,而 getInbox 是一个 snoowrap 函数,我很确定我使用正确,它返回一个代表收件箱的 json 数据的承诺。再说一次,即使它是空的,仍然应该调用 newMentions ,对吗?

4

1 回答 1

3

将承诺返回给主函数

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

这样 OpenWhisk 将等待 Promise

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

也不console.err是函数是console.error

于 2018-02-14T03:39:37.833 回答