首页 > 解决方案 > 你如何(或者你能)如何在 JOVO 的 Intents 中运行异步代码?

问题描述

我想在我的 JOVO 意图中运行一个异步函数。目前,它正在同步运行代码,这不允许 JOVO 发送正确的响应。

这就是我的代码的样子。

app.setHandler({
  Intent() {
    var response = 'nada';

    response = FindItem(this.$inputs.Item.value);
    //I want it to be like:
    //response = await FindItem(this.$inputs.Item.value);//Where FindItem is a asynchronous method

    this.ask(response);
  }
});

FindItem()返回项目名称的字符串(如 Banana)。

然而,这只是回应'nada'。我希望它以(例如:)“香蕉”作为回应

有什么解决办法吗?

提前致谢!

标签: javascriptnode.jsasynchronousrequestjovo-framework

解决方案


JOVO网站上的简单解决方案

基本上,您想在 FindItem 方法中使用 Request Promises 或 Promises,并在 Intent 中使用“async”和“await”。

app.setHandler({
  **async** Intent() {
    var response = 'nada';

    response = **await** FindItem(this.$inputs.Item.value);
    //I want it to be like:
    //response = await FindItem(this.$inputs.Item.value);//Where FindItem is a asynchronous method

    this.ask(response);
  }
});

FindItem 看起来像:

async Finditem(item) { ... }

推荐阅读