Может ли кто-нибудь сказать мне, почему первый код срабатывает, а второй код не срабатывает? (Предположим, что «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
, но не сохраняете поставщика, поэтому он освобождается сразу после выполнения запроса и задолго до того, как сервер удовлетворит запрос.
Для возврата сетевого запроса требуется некоторое время, и провайдер должен существовать до тех пор, пока он не вернется.