2

我在 NEAR 合同的汇编脚本项目中找到了这个函数:

export function assert_single_promise_success(): void {
  const x = ContractPromise.getResults()
  assert(x.length == 1, "Expected exactly one promise result")
  assert(x[0].succeeded, "Expected PromiseStatus to be successful")
}

ContractPromise.getResults() 究竟做了什么?应该如何在 rust 中实现相同的东西?

4

2 回答 2

2

这是SDK repo中的示例之一在 Rust 中的类似内容

require!(env::promise_results_count() == 2);

let data0: Vec<u8> = match env::promise_result(0) {
  PromiseResult::Successful(x) => x,
  _ => env::panic_str("Promise with index 0 failed"),
};
于 2022-01-09T07:14:44.663 回答
1

我将给出一个答案,评论直接取自 的实现ContractPromise.getResults()可以在这里找到。该实现还有一个关于如何使用该功能的示例,这可能很有用。

在回调中从远程合约接收异步(一个或多个)结果的方法。

@returns 基于创建回调的 Promise 数量的结果数组。如果回调 usingthen仅安排在一个结果上,则将返回一个结果。

于 2022-01-09T11:01:09.897 回答