Moya 请求未针对一个提供者启动,但适用于另一提供者
Moya request not started for one provider but works for another
我继承了一个使用 Moya 的 RxSwift 项目。我有一项任务是将请求从一个后端移动到另一个后端。两个后端的 TargetType
都设置得很好,因为它们在其他地方被广泛使用。
原始请求如下所示:
return accessProvider.rx
.request(request)
.asObservable()
.debug()
.flatMapLatest({ [weak self] (response) -> Observable<Bool> in
//does some processing of the JSON
return just(true)
})
.catchError({ (error) -> Observable<Bool> in
return just(false)
})
这个returns很好,我得到了数据。
我的新请求完全相同,但唯一的区别是提供者和请求使用的是第二个 TargetType
。对于这一个,请求永远不会发生(与 Charles 确认)。我已经检查了 TargetType
,它看起来很好并且执行非 Rx Moya 请求工作正常,我订阅它的 Rx 请求也是如此。
为什么它不能使用 flatMapLatest?
我是 Rx 的新手,也是 Moya 的新手,所以非常感谢您的帮助。
编辑:
第一个提供商的调试消息:
Refresh token -> subscribed
Refresh token -> subscribed
Refresh token -> Event next(Status Code: 200, Data Length: 773)
第二个:
Refresh token -> subscribed
没有别的
问题不在 Moya
或 TargetType
中。
正如你所说
... and it looks just fine and performing a non-Rx Moya request works fine, so does an Rx request where I subscribe to it.
如果没有订阅,Rx 中的 Observables 将不会被触发。
在您的示例中,您将返回一个 Observable,如果您订阅它,一切都会正常工作。这实际上是预期的行为,因为您不想忽略服务器响应,您希望采取相应的行动。在您的情况下,如果请求成功,则返回 Bool 作为指示器,因此您可能想让用户知道他的操作是否成功,或者停止加载指示器或其他内容。
确保您保留提供者或它在某处拥有的依赖链。我在 past.
中遇到了保留问题
我继承了一个使用 Moya 的 RxSwift 项目。我有一项任务是将请求从一个后端移动到另一个后端。两个后端的 TargetType
都设置得很好,因为它们在其他地方被广泛使用。
原始请求如下所示:
return accessProvider.rx
.request(request)
.asObservable()
.debug()
.flatMapLatest({ [weak self] (response) -> Observable<Bool> in
//does some processing of the JSON
return just(true)
})
.catchError({ (error) -> Observable<Bool> in
return just(false)
})
这个returns很好,我得到了数据。
我的新请求完全相同,但唯一的区别是提供者和请求使用的是第二个 TargetType
。对于这一个,请求永远不会发生(与 Charles 确认)。我已经检查了 TargetType
,它看起来很好并且执行非 Rx Moya 请求工作正常,我订阅它的 Rx 请求也是如此。
为什么它不能使用 flatMapLatest?
我是 Rx 的新手,也是 Moya 的新手,所以非常感谢您的帮助。
编辑: 第一个提供商的调试消息:
Refresh token -> subscribed
Refresh token -> subscribed
Refresh token -> Event next(Status Code: 200, Data Length: 773)
第二个:
Refresh token -> subscribed
没有别的
问题不在 Moya
或 TargetType
中。
正如你所说
... and it looks just fine and performing a non-Rx Moya request works fine, so does an Rx request where I subscribe to it.
如果没有订阅,Rx 中的 Observables 将不会被触发。
在您的示例中,您将返回一个 Observable,如果您订阅它,一切都会正常工作。这实际上是预期的行为,因为您不想忽略服务器响应,您希望采取相应的行动。在您的情况下,如果请求成功,则返回 Bool 作为指示器,因此您可能想让用户知道他的操作是否成功,或者停止加载指示器或其他内容。
确保您保留提供者或它在某处拥有的依赖链。我在 past.
中遇到了保留问题