【问题标题】:OpenWhisk/Node -- Promise Is Not ResolvingOpenWhisk/Node -- Promise 没有解决
【发布时间】:2018-02-14 11:39:37
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    将承诺返回给主函数

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

    这样 OpenWhisk 将等待 Promise

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

    还有console.err不是函数是console.error

    【讨论】:

    • 现在我从哪里得到console.err?无论如何,它现在......有点工作,所以谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多