【问题标题】:How to delay swift property didSet so it only fires once per second如何延迟 swift 属性 didSet 使其每秒只触发一次
【发布时间】:2023-01-19 03:22:41
【问题描述】:

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

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

【问题讨论】:

    标签: swift


    【解决方案1】:

    每个@Published 属性在后台都有一个 Combine 发布者。您可以订阅此发布者并像这样对其进行去抖动:

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

    【讨论】:

      猜你喜欢
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      相关资源
      最近更新 更多