AsyncExtensions 提供了一系列操作符,旨在简化 AsyncSequences
的创建和组合。
AsyncExtensions 可以被视为 Apple swift-async-algorithms 的伴侣库。目前,这两个库之间存在重叠,但当 swift-async-algorithms 变得稳定时,AsyncExtensions 中重叠的操作符将被弃用。尽管如此,AsyncExtensions 将继续提供社区需要但 Apple 未提供的操作符。
要在 SwiftPM 项目中使用 AsyncExtensions
库,请将以下行添加到 Package.swift
文件中的依赖项中
.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(_:_:)
: 将来自自身的元素与来自另外两个异步序列的最新已知元素组合AsyncSequence
AsyncSequence
AsyncSequence
AsyncSequence
AsyncSequence
AsyncSequence
handleEvents()
: 在自身的生命周期内执行闭包mapToResult()
: 将来自自身的元素和错误映射到 Result
类型prepend(_:)
: 在自身前面添加一个元素scan(_:_:)
: 通过将当前元素以及闭包返回的最后一个值提供给闭包来转换来自自身的元素assign(_:)
: 将来自自身的元素赋值给属性collect(_:)
: 迭代来自自身的元素并执行闭包eraseToAnyAsyncSequence()
: 擦除为 AnyAsyncSequenceflatMapLatest(_:)
: 当自身是 AsyncSequence
的 AsyncSequence
时,将来自自身的元素转换为 AsyncSequence
并重新发布最近接收到的 AsyncSequence
发送的元素multicast(_:)
: 借助提供的 Subject 将来自自身的值共享给多个消费者share()
: 将来自自身的值共享给多个消费者switchToLatest()
: 当自身是 AsyncSequence
的 AsyncSequence
时,重新发布最近接收到的 AsyncSequence
发送的元素更多操作符和扩展即将推出。当然欢迎提交 Pull Request。