frontend/.pnpm-store/v3/files/5d/4c58a7b9367619cf6266bf248e11b25ff8544c34efc3f889be208a8cffce5eb024674671ef8d7fea861b7f0d7431ac84309e79f6020a3d0f9c4708707396c0

32 lines
898 B
Plaintext

import { Observable } from '../Observable';
import { from } from './from';
import { EMPTY } from './empty';
export function using(resourceFactory, observableFactory) {
return new Observable(subscriber => {
let resource;
try {
resource = resourceFactory();
}
catch (err) {
subscriber.error(err);
return undefined;
}
let result;
try {
result = observableFactory(resource);
}
catch (err) {
subscriber.error(err);
return undefined;
}
const source = result ? from(result) : EMPTY;
const subscription = source.subscribe(subscriber);
return () => {
subscription.unsubscribe();
if (resource) {
resource.unsubscribe();
}
};
});
}
//# sourceMappingURL=using.js.map