我已经在本地测试了一个 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/