Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 联合收割机框架中的值计时';附加运算符?_Ios_Swift_Combine - Fatal编程技术网

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),但后来他们意识到这是错误的,并在没有更改文档以匹配的情况下对其进行了更改