gpt4 book ai didi

ios - PromiseKit 取消 promise

转载 作者:搜寻专家 更新时间:2023-10-30 23:05:05 25 4
gpt4 key购买 nike

如何取消尚未履行或拒绝的 promise ?

PromiseKit 的文档讨论了取消 promise ,但我找不到如何执行此操作的具体示例。

给定:

currentOperation = client.load(skip: skip, query: nil)
currentOperation!.then { (items) in
self.processItems(items: items, skip: skip, query: query)
}.catch { (error) in
print("failed to load items - just retrying")
self.loadIfNeeded(skip: skip, query: query, onlyInStock: onlyInStock)
}

如果查询发生变化(用户在搜索栏中输入一些文本),我想取消并放弃 currentOperation,开始一个新的 promise 。

最佳答案

为了取消 promise ,您必须使用符合 CancellableError 协议(protocol)的任何错误类型来拒绝它。这样,任何将 policy 参数设置为 allErrorsExceptCancellation 的 catch block 都会让错误通过。

如果您需要一个 CancellablePromise,您可以将 Promise 子类化并实现一个 cancel() 函数,该函数将在调用时拒绝并返回 CancellableError。这是一个最小的实现:

https://gist.github.com/EfraimB/918eebdf7dd020801c72da1289c8d797

更新:

这是新 PromiseKit 版本 (6.4.1) 的更新

https://gist.github.com/EfraimB/3ac240fc6e65aa8835df073f68fe32d9

关于ios - PromiseKit 取消 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43907061/

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