Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.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 在RxMoya上没有被触发_Ios_Swift_Rx Swift_Moya - Fatal编程技术网

Ios 在RxMoya上没有被触发

Ios 在RxMoya上没有被触发,ios,swift,rx-swift,moya,Ios,Swift,Rx Swift,Moya,有人能告诉我为什么第一个代码被触发而第二个代码没有被触发吗?(假设“someEndPoint”工作正常) let provider=MoyaProvider() provider.rx.request(.someEndPoint).subscribe(onSuccess:{响应在 打印(“触发”) },onError:{中有错误 }).处置(由:处置人) MoyaProvider().rx.request(.someEndPoint).subscribe(onSuccess:{响应在 打印(“

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

let provider=MoyaProvider()
provider.rx.request(.someEndPoint).subscribe(onSuccess:{响应在
打印(“触发”)
},onError:{中有错误
}).处置(由:处置人)
MoyaProvider().rx.request(.someEndPoint).subscribe(onSuccess:{响应在
打印(“未触发”)
},onError:{中有错误
}).处置(由:处置人)
两种代码之间的区别在于是否使用“let”。我无法在第二个代码中打印“未触发”,也看不到第二个代码的任何网络日志。我真的很想知道为什么会这样


提前感谢。

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

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


网络请求需要一段时间才能返回,并且提供程序需要一直存在,直到返回为止。

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

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

网络请求需要一段时间才能返回,提供商需要一直存在,直到返回

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)