node.js - OpenWhisk/Node —— Promise 未解决

标签 node.js promise ibm-cloud serverless openwhisk

我已经在本地测试了一个 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 等待 promise 解决?我该怎么做呢?还是还有其他我没有看到的错误?

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

最佳答案

将 promise 返回到主函数

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

这样 OpenWhisk 将等待 Promise

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

另外 console.err 不是一个函数,是 console.error

关于node.js - OpenWhisk/Node —— Promise 未解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48778999/

相关文章:

javascript - 关于node.js中的MySQL模块以及与mySQL数据库的并发连接

node.js - 当我尝试在 Node 中执行 https post 请求时,出现 getaddrinfo ENOTFOUND 错误

docker - 如何解决Ice登录的Docker问题?

javascript - 链式 promise 会给出未定义的函数错误,但我可以单独执行这些函数

angular - 类型 'unknown' 不可分配给类型 'string'

apache-spark - Bluemix spark-submit——如何保护我的 Scala jar 所需的凭据

ssh - 使用 Putty 登录 Bluemix VM

node.js - 如何在 meteor 应用程序中正确配置 Node 中间件

node.js - 为什么执行 docker run 命令后容器立即退出?

javascript - Promise 等待解决而不返回