Как обеспечить минимальную задержку между событиями из издателя CombineIOS

Программируем под IOS
Ответить
Anonymous
 Как обеспечить минимальную задержку между событиями из издателя Combine

Сообщение Anonymous »

Как обеспечить минимальный интервал между событиями, испускаемыми из издателя Combine? При предположении, что я хочу, чтобы все события из Upstream были излучены, но с минимальным интервалом между ними, скажем, 1s. Если интервал между двумя событиями вверх по течению составляет> 1s, события должны быть излучены такими, какие они есть.
Пока я пробовал что -то вроде этого: < /p>

Код: Выделить всё

let subject = PassthroughSubject()

let result = subject.flatMap(maxPublishers: .max(1)) {
Just($0).delay(for: 1, scheduler: RunLoop.main)
}

let cancellable = result.sink {
print("--- value \($0) ---")
}

// Emitting values
subject.send(1)

DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
subject.send(2)
}

DispatchQueue.main.asyncAfter(deadline: .now() + 0.6) {
subject.send(3)
}

DispatchQueue.main.asyncAfter(deadline: .now() + 2.5) {
subject.send(4)
}
< /code>
Но результат, который я получаю: < /p>
--- value 1 ---
--- value 4 ---
Есть идеи, как это достичь?

Подробнее здесь: https://stackoverflow.com/questions/765 ... -publisher
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»