gpt4 book ai didi

swift - Throttle 发布者如何在 Swift Combine 中工作?

转载 作者:行者123 更新时间:2023-12-03 14:37:50 29 4
gpt4 key购买 nike

我被困在 Throttle 出版商。我不明白它选择间隔的方式。 Debounce 发布者更容易理解,它在每个发布的值之后选择一个间隔,并检查在该间隔内是否发布了新值。我见过一些 Throttle甚至示例 from Apple ,但它们非常非常简单。
假设我们有一些上游产生值,并且我们知道所有值何时产生( input: [Time] )。 Throttle发布者使用这些值,限制它们并在其他时间生成值 ( output: [Time] )。有没有办法编写一个函数来产生正确的预期 output ?

func output<Time>(interval: Time, input: [Time]) -> [Time] {
//
}
顺便说一句,我相信 latest参数在选择区间时没有任何作用,是吗?我相信它只是从提供的间隔中选择值。

最佳答案

throttle 可能是一个难以理解的野兽。参数latest确实有所不同,具体取决于接收到的 future 值的时间 - 它控制在 throttle 超时期间接收的那些值中的哪些(第一个或最后一个)在它到期时传播。
在至少收到一个值之前,Throttle 并不会真正开始“参与”延迟或取消更多值。一旦发生这种情况,您可以将其视为“启动计时器”。让我们使用一个持续时间为 1 秒的示例 throttle 。启动 throttle 接合的第一个值始终通过。之后的值受 throttle 影响。
当 throttle 开始接合时,只有在 1 秒的持续时间结束后才会传播更多值。如果在该“超时”窗口期间传播了多个值,则参数 'latest' 将选择在 throttle 计时器到期并为下一系列值重置时存储和传播这些属性中的哪些属性。 latest为真意味着给我在 throttle 计时器到期之前传播的最后一个值。
时间线图表位于 https://heckj.github.io/swiftui-notes/#reference-throttle对此有一点意义,尽管在实践中我没有发现自己非常需要在最新与否之间进行选择,尽管我怀疑有些用例至关重要。
如果您正在寻找的东西只是“减慢”流量但保留所有值,这不是您想要的 - 它会降低值以启用 throttle 。

关于swift - Throttle 发布者如何在 Swift Combine 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62945956/

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