Использование
создайте ресурс с ограниченным сроком действия, имеющий тот же срок жизни, что и Observable
Оператор Using — это способ указать Observable на создание ресурса, существующего только в течение срока жизни Observable, и который удаляется при завершении Observable.
См. также
Информация, специфичная для языка
RxGroovy using
Вы передаёте оператору using три параметра:
- функцию-фабрику, которая создаёт ресурс с ограниченным сроком действия
- функцию-фабрику, которая создаёт Observable
- функцию, которая освобождает ресурс
Когда подписчик подписывается на Observable, возвращаемое оператором using, using использует функцию-фабрику Observable для создания Observable, за которым будет наблюдать подписчик, а также использует функцию-фабрику ресурса для создания необходимого ресурса. Когда подписчик отписывается от Observable или когда Observable завершается (нормально или с ошибкой), using вызовет третью функцию для освобождения созданного ресурса.
using по умолчанию не работает с каким-либо конкретным расписанием.
- Javadoc:
using(Func0,Func1,Action1)
RxJava 1․x using
Вы передаёте оператору using три параметра:
- функцию-фабрику, которая создаёт ресурс с ограниченным сроком действия
- функцию-фабрику, которая создаёт Observable
- функцию, которая освобождает ресурс
Когда подписчик подписывается на Observable, возвращаемое оператором using, using использует функцию-фабрику Observable для создания Observable, за которым будет наблюдать подписчик, а также использует функцию-фабрику ресурса для создания необходимого ресурса. Когда подписчик отписывается от Observable или когда Observable завершается (нормально или с ошибкой), using вызовет третью функцию для освобождения созданного ресурса.
using по умолчанию не работает с каким-либо конкретным расписанием.
- Javadoc:
using(Func0,Func1,Action1)
RxJS using
Вы передаёте оператору using два параметра:
- функцию-фабрику, которая создаёт ресурс с ограниченным сроком действия
- функцию-фабрику, которая создаёт Observable
Когда подписчик подписывается на Observable, возвращаемое оператором using, using использует функцию-фабрику Observable для создания Observable, за которым будет наблюдать подписчик, а также использует функцию-фабрику ресурса для создания необходимого ресурса. Для освобождения ресурса вызовите метод dispose подписки, возвращённой из вызова subscribe, который вы использовали для подписки наблюдателя к Observable, который вы изменили с помощью using.
Пример кода
/* Using an AsyncSubject as a resource which supports the .dispose method */
function DisposableResource(value) {
this.value = value;
this.disposed = false;
}
DisposableResource.prototype.getValue = function () {
if (this.disposed) {
throw new Error('Object is disposed');
}
return this.value;
};
DisposableResource.prototype.dispose = function () {
if (!this.disposed) {
this.disposed = true;
this.value = null;
}
console.log('Disposed');
};
var source = Rx.Observable.using(
function () { return new DisposableResource(42); },
function (resource) {
var subject = new Rx.AsyncSubject();
subject.onNext(resource.getValue());
subject.onCompleted();
return subject;
}
);
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); }); Next: 42 Completed
subscription.dispose();
Disposed
using представлен в каждом из следующих распределений:
rx.jsrx.compat.js
© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/using.html