【问题标题】:Angular 9 : rxjs 6 : how to return a manual Observable of ErrorAngular 9:rxjs 6:如何返回手动可观察到的错误
【发布时间】:2021-03-25 13:59:05
【问题描述】:

在我的 Angular 应用程序中,为了在 HorLigne 模式下测试一些功能,我需要模拟 http 有用的响应:

  • 200 OK 返回包含一些数据
  • 没有数据的 404 KO 返回

通常我试过这个:

@Injectable()
export class VerifService {
  mockedResult = false;
  verifData(mail, uuid) {
    if (this.mockedResult) {
      return ObservaleOf({ status: "OK" }).pipe(delay(3000));
    } else {
      return throwError({ status: 500, message: "not found" }).pipe(
        delay(3000)
      );
    }
  }
}

在我的组件中,我正在这样做:

this.verifService.verifData(mail, uuid).subscribe(data=>{
  console.log('THIS WORKS')
}, err => {
  console.log('THIS FAILS')
}

对于 mockedResult 等于 true 的情况,成功的 200 OK 返回是有效的

但是对于 404 错误返回,它不起作用

还有其他模拟 404 error observable return 的好方法吗?

建议?

【问题讨论】:

  • 我想应该可以。您是否将mockedResult 设置为false 以便可以遍历throwError
  • 使用throwError 是正确的。 delay() 在这里无效。你能做一个复制这个问题的演示吗?

标签: javascript angular rxjs rxjs6 rxjs-observables


【解决方案1】:

不确定哪里不工作。如果您需要暂停一段时间:

interval(1000).pipe(
  switchMap(
    () => throwError(new Error())
  )
)

当 throwError 已停止 observable 时,管道将无法工作。

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 2017-03-23
    • 2017-06-11
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多