当前位置: 首页>>代码示例>>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;未经允许,请勿转载。