AsyncExtensions 提供了一系列旨在简化 AsyncSequences 的创建和组合的操作符。
AsyncExtensions 可以被视为 Apple swift-async-algorithms 的伴侣。目前,这两个库之间存在重叠,但是当 swift-async-algorithms 变得稳定时,重叠的操作符将在 AsyncExtensions 中被弃用。尽管如此,AsyncExtensions 将继续提供社区需要但 Apple 未提供的操作符。
要在 SwiftPM 项目中使用 AsyncExtensions 库,请将以下行添加到 Package.swift 文件中的 dependencies 中
.package(url: "https://github.com/sideeffect-io/AsyncExtensions"),
在您的可执行目标中包含 "AsyncExtensions" 作为依赖项
.target(name: "<target>", dependencies: ["AsyncExtensions"]),
最后,将 import AsyncExtensions 添加到您的源代码中。
zip(_:_:): 将两个 AsyncSequence 压缩成一个元素元组的 AsyncSequencezip(_:_:_:): 将三个 AsyncSequence 压缩成一个元素元组的 AsyncSequencezip(_:): 将任何异步序列压缩成一个元素数组merge(_:_:): 将两个 AsyncSequence 合并成一个元素 AsyncSequencemerge(_:_:_:): 将三个 AsyncSequence 合并成一个元素 AsyncSequencemerge(_:): 将任何 AsyncSequence 合并成一个元素 AsyncSequencewithLatest(_:): 将来自自身的元素与来自另一个 AsyncSequence 的最新已知元素组合withLatest(_:_:): 将来自自身的元素与来自另外两个异步序列的最新已知元素组合AsyncSequenceAsyncSequenceAsyncSequenceAsyncSequenceAsyncSequenceAsyncSequencehandleEvents(): 在自身的生命周期内执行闭包mapToResult(): 将来自自身的元素和失败映射到 Result 类型prepend(_:): 向自身预先添加一个元素scan(_:_:): 通过将当前元素以及闭包返回的最后一个值提供给闭包来转换来自自身的元素assign(_:): 将来自自身的元素赋值给一个属性collect(_:): 迭代来自自身的元素并执行一个闭包eraseToAnyAsyncSequence(): 擦除到 AnyAsyncSequenceflatMapLatest(_:): 当自身是 AsyncSequence 的 AsyncSequence 时,将来自自身的元素转换为 AsyncSequence 并重新发布最近接收的 AsyncSequence 发送的元素multicast(_:): 借助提供的 Subject 将来自自身的值共享给多个消费者share(): 将来自自身的值共享给多个消费者switchToLatest(): 当自身是 AsyncSequence 的 AsyncSequence 时,重新发布最近接收的 AsyncSequence 发送的元素更多操作符和扩展即将到来。当然,欢迎提交 Pull Request。