0
我有冷觀察,當計算調度程序訂閱時產生大量的項目,併發送給另一個誰做了更重的工作。rxJava停止觀察取消訂閱
問題是我想停止所有可觀察鏈,當我退訂它。
這有什麼經營者?我試圖檢查是否有訂戶,但此時我的大部分物品都已排出。
我有冷觀察,當計算調度程序訂閱時產生大量的項目,併發送給另一個誰做了更重的工作。rxJava停止觀察取消訂閱
問題是我想停止所有可觀察鏈,當我退訂它。
這有什麼經營者?我試圖檢查是否有訂戶,但此時我的大部分物品都已排出。
創建一個可觀察的,做繁重的工作,並可以查看訂閱:
obs //emits stuff fast
.flatMap(x ->
Observable.create(
sub -> {
//frequently check subscription status
while (!sub.isUnsubscribed()) {
// do some work
if (finished) break;
}
if (!sub.isUnsubscribed()) {
sub.onNext(result);
sub.onCompleted();
}
}))
//ensure backpressure compliant
.onBackpressureBuffer()
).subscribe(subscriber);
我很笨,因爲沒有想到這一點。謝謝! –
調用'subscriber.unsubscribe()'將取消整個鏈條。你有單鏈嗎?你能顯示一些代碼嗎? –
@DaveMoten,Yeap我的第一個可觀察的停止發射項目,但是我的(慢速)'flatmap'函數繼續處理調用'unsubscribe'之前發射的項目。 –
@GuilhermeTorresCastro您的線程在取消訂閱時會中斷 - 請檢查您正在進行工作時的中斷狀態並在設置時提前退出。 –