首页 > 解决方案 > 暂停一段代码在谷歌云函数/Dialogflow中运行

问题描述

我正在使用 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.add一个console.log

环境:谷歌云函数

该代码用于 DialogFlow

请提供任何帮助

标签: javascriptnode.jsgoogle-cloud-functionsdialogflow-espusher-js

解决方案


只需在回调中继续您的程序逻辑即可。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');
    });

推荐阅读