了解 Cadence 中的 Signal 和 Query

Understanding Signal and Query in cadence

Query - Query就是将这个内部状态暴露给外部世界。查询公开为由外部实体调用的异步回调。

异步回调是什么意思?

Doc 说,Query 有两个限制 1)。不应改变工作流 2) 的状态。不会有任何阻塞操作。

@Override
    public String queryGreeting() {
      greeting = "val";
      return greeting;
    }

但我确实在查询方法中改变了变量,它正在改变值。

我们不应该在查询方法中编写可变或阻塞代码只是一种信念吗?

我没有发现查询和信号之间有任何区别。即使在工作流完成后也会调用查询方法,而 Signal 不会?

我的理解正确吗?

查询不应改变工作流变量。这将破坏工作流恢复。

信号可以改变任何工作流数据以及调用活动等阻塞操作。