【问题标题】:How to return a promise inside Observable subscriber angular 8如何在 Observable 订阅者角度 8 中返回承诺
【发布时间】:2020-04-09 07:25:15
【问题描述】:

我正在做一个 Angular 8 项目,我需要在订阅中返回一个承诺。 这是我的观察结果:

export async function resolvePage(api: ApiService, transition: Transition) {
    const slug = transition.params().slug.split('/').slice(-1).pop();
    return api.get(`/pages/${slug}`).toPromise();
}

我需要做这样的事情,但它不起作用:

export async function resolvePage(
  api: ApiService,
  transition: Transition,
  stateService: StateService
) {
  const slug = transition
    .params()
    .slug.split("/")
    .slice(-1)
    .pop();
  return api.get(`/pages/${slug}`).subscribe(
    (res: any) => {
      return new Promise((resolve, reject) => {
        resolve(res);
      });
    },
    () => {
      stateService.go("app.404");
    }
  );
}

我该怎么做?

【问题讨论】:

  • return api.get(...).toPromise() 但这破坏了使用 observables 的好处。
  • 我需要在订阅中返回一个承诺
  • "这是我的 observable:" 你展示的不是 observable,而是一个 promise...
  • apiService 是可观察的
  • 你能返回解析方法 - '{return resolve(res)}' 吗?

标签: javascript angular promise observable


【解决方案1】:

您可以使用Observable.toPromise() 方法。见https://www.learnrxjs.io/operators/utility/topromise.html

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 2021-09-02
    • 2018-09-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多