gpt4 book ai didi

android - Pepper QISDK同步调用是否可以确保结果?

转载 作者:行者123 更新时间:2023-12-02 13:27:07 26 4
gpt4 key购买 nike

QiSDK文档可以理解,async()Future<T>调用具有结果状态。
e.x.

var goto = GoToBuilder..
var operation = goto.async().run().thenConsume {
//if(it.isSuccess or it.hasError()) etc. statuses are available
}
//These statuses are also available in the $operation variable afterwards
if(operation.hasError()) {...}
但是当我们调用操作 sync()
e.x.只是
var goto = GoToBuilder...
goto.run()
是否确保成功完成后将完成操作?
还会锁定 current Thread或我们对 sync()调用应该了解些什么?因为文档说,最佳实践是始终使用 async(),但是如果我不希望Pepper为某个 Action 创建 new Thread并将其与代码一起处理该怎么办。

最佳答案

Does it ensures that the operation will be completed with the success?


不,是否使用 async()对成功的机会没有影响;如果发生错误,变化是什么:
  • 使用.async(),将来会以错误结束(.hasError().getErrorMessage() ...)
  • 通过同步调用,该调用将引发异常(因此您可以使用try / catch对其进行包装)

  • Will it also lock the current Thread or what should we know about sync() calls?


    是的,同步调用将阻塞当前线程,直到操作完成(成功,被取消或失败),这意味着您永远不要在android主线程(UI线程)中执行此操作,否则您将获得 NetworkOnUIThread异常。
    请注意,并非所有 call 都自行完成。例如, chat.run()对象上的 Chat将“永远”运行,即直到取消它或引发错误为止。这是 .sync()有用的另一种情况,因为您将获得可以取消的 future 以停止聊天。

    关于android - Pepper QISDK同步调用是否可以确保结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63229836/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com