Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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/3/wix/2.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
Swift 发布服务器接收器从不运行完成_Swift_Combine - Fatal编程技术网

Swift 发布服务器接收器从不运行完成

Swift 发布服务器接收器从不运行完成,swift,combine,Swift,Combine,我正在尝试合并两个发布服务器,但其中一个完成服务器从未运行。 下面是我如何创建我的两个发布者,并尝试使用.sink观察它们何时完成。featureFlagPublisher将按预期完成并打印“featureFlagPublisher已完成”,但migratePublisher和合并的发布服务器将永远不会完成。publisher.send(完成:.finished)已运行,但不会发生任何事情 private var cancellables = Set<AnyCancellable>(

我正在尝试合并两个发布服务器,但其中一个完成服务器从未运行。
下面是我如何创建我的两个发布者,并尝试使用
.sink
观察它们何时完成。
featureFlagPublisher
将按预期完成并打印“featureFlagPublisher已完成”,但
migratePublisher
和合并的发布服务器将永远不会完成。
publisher.send(完成:.finished)
已运行,但不会发生任何事情

private var cancellables = Set<AnyCancellable>()

func start() {
    let featureFlagPublisher = self.startFeatureFlagging()
    let migratePublisher = self.migrate()
    
    migratePublisher.sink { _ in
        print("migratePublisher done")
    } receiveValue: { _ in }.store(in: &cancellables)

    featureFlagPublisher.sink { _ in
        print("featureFlagPublisher done")
    } receiveValue: { _ in }.store(in: &cancellables)
    
    migratePublisher.merge(with: featureFlagPublisher)
        .sink { completion in
            print("All Done")
        } receiveValue: { _ in }
        .store(in: &cancellables)
}

private func startFeatureFlagging() -> AnyPublisher<Bool, Never> {
    let future = Future<Bool, Never> { promise in
        FeatureFlaggingService.shared.start {
            promise(.success(true))
        }
    }
    return future.eraseToAnyPublisher()
}


private func migrate() -> AnyPublisher<Bool, Never>  {
    let future = Future<Bool, Never> { promise in 
        FavoriteMigrationsAPI.shared.get { result in
            switch result {
                case .success(let favoriteIDs):
                    promise(.success(true))
            ...
        }
    }

    return future.eraseToAnyPublisher()
}
private var cancelables=Set()
func start(){
让featureFlagPublisher=self.startFeatureFlagging()
让migratePublisher=self.migrate()
migratePublisher.sink{uu}in
打印(“已完成迁移发布程序”)
}receiveValue:{uUin}.store(in:&可取消项)
featureFlagPublisher.sink{uu}in
打印(“featureFlagPublisher已完成”)
}receiveValue:{uUin}.store(in:&可取消项)
migratePublisher.merge(与:featureFlagPublisher一起)
.sink{在中完成
打印(“全部完成”)
}receiveValue:{uIn}
.store(在:&可取消项中)
}
private func startFeatureFlagging()->AnyPublisher{
让未来=未来{承诺未来
FeatureFlaggingService.shared.start{
承诺(.成功(真实))
}
}
返回future.eraseToAnyPublisher()
}
private func migrate()->AnyPublisher{
让未来=未来{承诺未来
FavoriteMigrationsAPI.shared.get{结果在
切换结果{
成功案例(让FavoriteId):
承诺(.成功(真实))
...
}
}
返回future.eraseToAnyPublisher()
}