在 RxMoya 上没有被触发

Not getting triggered on RxMoya

谁能告诉我为什么第一个代码被触发而第二个代码没有被触发? (假设“someEndPoint”工作正常)

let provider = MoyaProvider<MyApiService>()
provider.rx.request(.someEndPoint).subscribe(onSuccess: { response in
  print("triggered")
}, onError: { error in
}).disposed(by: disposeBag)
MoyaProvider<MyApiService>().rx.request(.someEndPoint).subscribe(onSuccess: { response in
  print("not triggered")
}, onError: { error in
}).disposed(by: disposeBag)

两个代码的区别只是是否使用“let”。我无法在第二个代码中打印“未触发”,并且看不到第二个代码的任何网络日志。我很想知道这是为什么。

提前致谢。

在第一个示例中,您正在创建 并保留 提供商。

在第二个示例中,您正在创建提供程序,然后调用 request 但您没有保留提供程序,因此它会在发出请求后立即解除分配,并且在服务器满足请求之前很久。

网络请求需要一段时间才能返回,提供者需要保持存在直到它返回。