【发布时间】:2019-04-05 03:24:21
【问题描述】:
我在一个名为 settings 和 settingsLoading 的容器中有两个 Observable。我有一个检索一些设置的 API 调用,一旦调用完成,settingsLoading 将设置为 true,settings 将包含来自 API 的数据。我将settings 数据传递给一个组件,并将settingsLoading 传递给与 Observable 相同的组件。
在该组件中,如下所示,我订阅了settingsLoading Observable,一旦加载为假,我会创建一些控制台日志,以便查看现在应该设置的设置数据。控制台日志总是返回 null ,除非我将它包装在 0 秒的超时中。为什么我需要这样做?这是一种可靠的处理方式吗?有没有更好的方法来避免超时?
在下面的代码中,第一个控制台日志将始终返回 null,而第二个似乎始终包含我期望的数据:
subscribeToLoadSettings() {
this.settingsLoading.subscribe(loading => {
if (!loading) {
// This doesn't work
console.log('settings', this.settings);
setTimeout(() => {
// This works
console.log('settings', this.settings);
}, 0);
}
});
}
【问题讨论】:
-
能否包含加载设置的代码以及
settingsLoading的更新方式。那么我们可以帮助您正确构建它。
标签: angular observable ngrx