coroutines मैं विस्तार विधि का उपयोग कर इसघातीय कैसे backoff kotlin पर पुन: प्रयास
public suspend fun <T : Any> Call<T>.await(): T {
return suspendCancellableCoroutine { continuation ->
enqueue(object : Callback<T> {
override fun onResponse(call: Call<T>?, response: Response<T?>) {
if (response.isSuccessful) {
val body = response.body()
if (body == null) {
continuation.resumeWithException(
NullPointerException("Response body is null")
)
} else {
continuation.resume(body)
}
} else {
continuation.resumeWithException(HttpException(response))
}
}
override fun onFailure(call: Call<T>, t: Throwable) {
// Don't bother with resuming the continuation if it is already cancelled.
if (continuation.isCancelled) return
continuation.resumeWithException(t)
}
})
registerOnCompletion(continuation)
}
}
की तरह पुराना वापस में वर्ग कॉल करने के लिए नेटवर्क अनुरोध के लिए coroutines kotlin उपयोग कर रहा हूँ तो पक्ष बुला मैं इस
की तरह विधि से ऊपर का उपयोग कर रहा सेprivate fun getArticles() = launch(UI) {
loading.value = true
try {
val networkResult = api.getArticle().await()
articles.value = networkResult
}catch (e: Throwable){
e.printStackTrace()
message.value = e.message
}finally {
loading.value = false
}
}
मैं कुछ मामलों में इस एपीआई कॉल को घातीय करना चाहता हूं यानी (आईओएक्सप्शन) मैं इसे कैसे प्राप्त कर सकता हूं ??
वाह बहुत साफ उत्तर धन्यवाद –
यह ऐसा कुछ था जो मेरे सिर के पीछे था कुछ दिन अब समाधान देखने में अच्छा लगा कि मैं कल्पना कर रहा था उससे ज्यादा जटिल नहीं है। मैं खुद से यह भी पूछ रहा था कि क्या इस सहायक समारोह को इनलाइन फ़ंक्शन के रूप में परिभाषित करना समझ में आता है। और आखिरी लेकिन कम से कम नहीं: एक संशोधित कैसे किया जाएगा, यदि आप उपयोगकर्ता को ऐसा करने के बाद केवल पुनः प्रयास निष्पादित करना चाहते हैं (उदाहरण के लिए। एक संवाद में)? –
आरएक्स समाधान से भी ज्यादा क्लीनर: -ओ – kenyee