Ios 联合收割机框架中的值计时';附加运算符?
联合收割机框架上的Ios 联合收割机框架中的值计时';附加运算符?,ios,swift,combine,Ios,Swift,Combine,联合收割机框架上的append操作符上显示: 此运算符在发布服务器完成之前不生成任何元素。然后生成该发布者的元素,然后生成给定发布者的元素 因此,我希望第一个出版商的元素能够一次完成,而不考虑第一个出版商实际发布的时间。但事实并非如此 例如: [1,2,3,4].publisher.flatMap(maxPublishers: .max(1)) { Just($0).delay(for: 1, scheduler: DispatchQueue.main) }.ap
append
操作符上显示:
此运算符在发布服务器完成之前不生成任何元素。然后生成该发布者的元素,然后生成给定发布者的元素
因此,我希望第一个出版商的元素能够一次完成,而不考虑第一个出版商实际发布的时间。但事实并非如此
例如:
[1,2,3,4].publisher.flatMap(maxPublishers: .max(1)) {
Just($0).delay(for: 1, scheduler: DispatchQueue.main)
}.append( Just(100) )
如您所见,第一个发布者每隔一秒钟生成
1
、2
、3
、4
。根据文档,append
应该等到所有四个值都生成后(即四秒钟),然后立即重新发布这些值。但事实并非如此。我所看到的正是第一个出版商自己的作品,也就是说,1
,2
,3
,4
,每隔一秒钟。发生了什么事?文档似乎有误
另一种方法是从第一个永远不会完成的发布者开始:
Timer.publish(every: 1, on: .main, in: .common).autoconnect()
.append(Just(Date()))
如果文档是正确的,那就永远不会产生任何价值,因为第一个发布者永远不会完成。但相反,它每秒生成第一个发布者的值
append
(publisher.Concatenate)使用的实际策略似乎是:
- 它订阅第一个发布者,并在其值到达时重新发布
- 如果它从第一个发布服务器收到完成的完成,它将订阅第二个发布服务器并在其值到达时重新发布
.append
(Concatenate),但后来他们意识到这是错误的,并在没有更改文档以匹配的情况下对其进行了更改