當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript operators.throwIfEmpty函數代碼示例

本文整理匯總了TypeScript中rxjs/operators.throwIfEmpty函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript throwIfEmpty函數的具體用法?TypeScript throwIfEmpty怎麽用?TypeScript throwIfEmpty使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了throwIfEmpty函數的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: asDiagram

 asDiagram('throwIfEmpty')('should error when empty', () => {
   const source = cold('----|');
   const expected =    '----#';
   expectObservable(
     source.pipe(throwIfEmpty(() => new Error('test')))
   ).toBe(expected, undefined, new Error('test'));
 });
開發者ID:DallanQ,項目名稱:rxjs,代碼行數:7,代碼來源:throwIfEmpty-spec.ts

示例2: it

 it('should error when empty', () => {
   const source = cold('----|');
   const sub1 =        '^   !';
   const expected =    '----#';
   expectObservable(
     source.pipe(throwIfEmpty(() => new Error('test')))
   ).toBe(expected, undefined, new Error('test'));
   expectSubscriptions(source.subscriptions).toBe([sub1]);
 });
開發者ID:deanius,項目名稱:RxJS,代碼行數:9,代碼來源:throwIfEmpty-spec.ts

示例3: runBenchmark

export function runBenchmark({
  command, captures, reporters = [], iterations = 5, retries = 5, logger = new logging.NullLogger(),
}: RunBenchmarkOptions): Observable<MetricGroup[]> {

  let successfulRuns = 0;
  let failedRuns = 0;
  const notDoneYet = new BaseException('Not done yet.');
  const processFailed = new BaseException('Wrong exit code.');
  const debugPrefix = () => `Run #${successfulRuns + 1}:`;
  let aggregatedMetricGroups: MetricGroup[] = [];

  // Run the process and captures, wait for both to finish, and average out the metrics.
  return new Observable(obs => {
    const monitoredProcess = new LocalMonitoredProcess(command);
    const metric$ = captures.map(capture => capture(monitoredProcess));
    obs.next([monitoredProcess, ...metric$]);
  }).pipe(
    tap(() => logger.debug(`${debugPrefix()} starting`)),
    concatMap(([monitoredProcess, ...metric$]) => forkJoin(monitoredProcess.run(), ...metric$)),
    throwIfEmpty(() => new Error('Nothing was captured')),
    concatMap((results) => {
      const [processExitCode, ...metrics] = results;

      if ((processExitCode as number) != command.expectedExitCode) {
        logger.debug(`${debugPrefix()} exited with ${processExitCode} but `
          + `${command.expectedExitCode} was expected`);

        return throwError(processFailed);
      }

      logger.debug(`${debugPrefix()} finished successfully`);

      return of(metrics as MetricGroup[]);
    }),
    map(newMetricGroups => {
      // Aggregate metric groups into a single one.
      if (aggregatedMetricGroups.length === 0) {
        aggregatedMetricGroups = newMetricGroups;
      } else {
        aggregatedMetricGroups = aggregatedMetricGroups.map((_, idx) =>
          aggregateMetricGroups(aggregatedMetricGroups[idx], newMetricGroups[idx]),
        );
      }

      successfulRuns += 1;

      return aggregatedMetricGroups;
    }),
    concatMap(val => successfulRuns < iterations ? throwError(notDoneYet) : of(val)),
    // This is where we control when the process should be run again.
    retryWhen(errors => errors.pipe(concatMap(val => {
      // Always run again while we are not done yet.
      if (val === notDoneYet) { return of(val); }

      // Otherwise check if we're still within the retry threshold.
      failedRuns += 1;
      if (failedRuns < retries) { return of(val); }

      if (val === processFailed) { return throwError(new MaximumRetriesExceeded(retries)); }

      // Not really sure what happened here, just re-throw it.
      return throwError(val);
    }))),
    tap(groups => reporters.forEach(reporter => reporter(command, groups))),
    take(1),
  );
}
開發者ID:DevIntent,項目名稱:angular-cli,代碼行數:67,代碼來源:run-benchmark.ts


注:本文中的rxjs/operators.throwIfEmpty函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。