@reactivex/ix-es2015-cjs
Version:
The Interactive Extensions for JavaScript
23 lines (21 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.iif = void 0;
const tslib_1 = require("tslib");
const defer_js_1 = require("./defer.js");
const empty_js_1 = require("./empty.js");
/**
* If the specified condition evaluates true, select the thenSource sequence.
* Otherwise, select the elseSource sequence.
*
* @template TSource The type of the elements in the result sequence.
* @param {((signal?: AbortSignal) => boolean | Promise<boolean>)} condition Condition evaluated to decide which sequence to return.
* @param {AsyncIterable<TSource>} thenSource Sequence returned in case evaluates true.
* @param {AsyncIterable<TSource>} [elseSource=empty()] Sequence returned in case condition evaluates false.
* @returns {AsyncIterableX<TSource>} thenSource if condition evaluates true; elseSource otherwise.
*/
function iif(condition, thenSource, elseSource = (0, empty_js_1.empty)()) {
return (0, defer_js_1.defer)((signal) => tslib_1.__awaiter(this, void 0, void 0, function* () { return ((yield condition(signal)) ? thenSource : elseSource); }));
}
exports.iif = iif;
//# sourceMappingURL=iif.js.map