You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
898 B
32 lines
898 B
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
|