【问题标题】:Pausing a block of code from being run in google cloud functions/Dialogflow暂停一段代码在谷歌云函数/Dialogflow中运行
【发布时间】:2018-10-20 13:42:22
【问题描述】:

我正在使用 pusher 来监听从另一台服务器发送的特定事件。

我已成功绑定到事件,但我的问题是代码越过了绑定并执行其余代码。

我尝试过使用Await,但这也无济于事

我不能使用setTimeout,因为推送事件中要接收的消息取决于用户是否完成支付。

代码

await pusher.bind(trans_id, function(data) {
        if (data.message === 'success') {
            agent.add('Transaction was successful');
        } else {
            agent.add('Transaction was unsuccessful');
        }
    });

    agent.add('Transaction Successful');

    console.log('We got here');

如你所见,代码并没有等待pusher.bind执行,而是直接跳转到下一个agent.addconsole.log

环境:谷歌云函数

代码用于 DialogFlow

请帮忙

【问题讨论】:

  • 请不要显示代码截图。最好将代码复制到问题中,以便于搜索和阅读。
  • 我删除了图片@DougStevenson
  • 您在 firebase 函数中使用的是哪个版本的 node.js?如果版本是节点 6,您可以将节点版本更改为 8,现在处于测试阶段,或者您可以使用 babel 在节点 6.0 中支持异步等待
  • @AniketPawar我使用 8... async await 已经可以工作了...

标签: javascript node.js google-cloud-functions dialogflow-es pusher-js


【解决方案1】:

只需在回调中继续您的程序逻辑即可。 pusher.bind 执行非常快,是稍后执行的回调。

pusher.bind(trans_id, function(data) {
        if (data.message === 'success') {
            agent.add('Transaction was successful');
        } else {
            agent.add('Transaction was unsuccessful');
        }

        console.log('We got here');
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2020-10-28
    • 2021-10-12
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多