javascript - 你如何(或者你能)如何在 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'。我希望它以(例如:)“香蕉”作为回应
有什么解决办法吗?
提前致谢!
解决方案
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) { ... }
推荐阅读
- javascript - 如果使用“new”来实例化具有工厂函数的对象,它会改变什么吗?
- c# - 如何为使用 WPF 的命令传递十进制值作为 CommandParameter?
- sql - SQL如何将字段总和设为特定值并使其成为列标题?
- html - wxpython htmlWindow 显示
- c# - 从代码中调用 Controller 的 PartialViewResult 并呈现为字符串
- css - Sass转换延迟循环?
- javascript - 函数式编程 - 保留对函数结果的引用以供以后使用的最佳方法是什么?
- reactjs - antd 组件比父 div 隐藏得晚
- angular - Ionic 3选中至少一个复选框
- javascript - Chrome TCP 连接排队数秒