如何延迟swift属性didSet使其每秒仅触发一次

5vf7fwbs  于 2023-01-19  发布在  Swift
关注(0)|答案(1)|浏览(131)

有没有可能限制didSet,让它在一个时间间隔内只触发一次,比如每秒一次,而不是一秒内多次触发,就像某种去抖动方法?

@Published var someProperty: String = "" {didSet {
    Task {
        await someFunction(someParamater: someProperty)
    }
}}
chy5wohz

chy5wohz1#

每个@Published属性都有一个合并发布者。您可以订阅此发布者并按如下方式解除抖动:

myModel.$someProperty
    .debounce(...)
    .sink { value in
        // Do what you wanted to do in didSet
    }
    .store(in: &cancellables)

相关问题