您如何(或可以)在JOVO的Intent中运行异步代码?

时间:2019-04-29 13:49:54

标签: javascript node.js asynchronous request jovo-framework

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

这就是我的代码。

class CheckboxButton: UIButton {

    override var intrinsicContentSize: CGSize {
        return titleLabel?.intrinsicContentSize ?? CGSize.zero
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        titleLabel?.preferredMaxLayoutWidth = titleLabel?.frame.size.width ?? 0
        super.layoutSubviews()
    }

}

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); } }); 返回项目名称的字符串(例如Banana)。

但是,这只是以'nada'开头。我希望它以(例如:)“香蕉”作为响应

有解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

JOVO's website的简便解决方案

基本上,您想在FindItem方法中使用“请求承诺”或“承诺”,并在Intent中使用“ async”和“ await”。

>>> card1 = '9♥'
>>> card2 = '9♠'
>>> card1[0] == card2[0]
True

FindItem看起来像:

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);
  }
});