【问题标题】:How to wait with function execution until subscription is completed?如何等待函数执行直到订阅完成?
【发布时间】:2019-03-21 22:41:27
【问题描述】:

我想订阅一个 Observable,然后执行另一个函数。我的问题是,请求完成需要一点时间。但是,代码会在订阅开始后立即继续执行。

我需要在订阅完成后提供的一些信息。没有这些数据,transformShopList() 将失败。当我运行代码时,会发生这种情况。

您如何等待订阅完成,然后继续执行其余语句?

this.observable3.subscribe(
  ...
);
// wait here?
this.transformShopList();

【问题讨论】:

  • 你试过.then()吗? this.observable3.subscribe().then(function(){ .. })
  • 不,then(...) 之后的其他语句也会等待 .then 完成吗?
  • 你应该在.subscribe完成后包含你想要执行的功能,在.then()里面

标签: javascript observable


【解决方案1】:

无论你在 Javascript 中做什么,都会遇到这个问题。异步任务必须链接。使用PromiseObservable 或回调函数。

正确的代码是

this.observable3.subscribe((...) => {
  ...
  this.transformShopList();
});

【讨论】:

    【解决方案2】:

    一个 observable 发出一个事件,你的订阅接收它。将您的转换商店列表移动到订阅响应中,它将在 observable 发出时执行。

    https://angular.io/guide/observables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多