订阅功能无法正常工作
Posted
技术标签:
【中文标题】订阅功能无法正常工作【英文标题】:subscribe function doesn't work correctly 【发布时间】:2018-02-01 11:37:21 【问题描述】:在这段代码中,subscribe 函数在 loadFromDB 函数的最后一行之后执行:
loadFromDB()
const loading = this.loadingCtrl.create(
content: 'pleas wait'
);
loading.present();
this.getInterviewFromDB()
.subscribe((data) =>
this.events = data;
console.log( 'before');
);
this.getMeetingsFromDB().subscribe((data)=>
this.events.concat(data);
);
loading.dismiss();
console.log( 'after');
加载存在并在从数据库加载任何数据之前关闭 这是日志的输出
说明了订阅功能下的那一行 Execute 在其中的 console.log 之后......任何人都可以向我解释......?!
【问题讨论】:
这是开发人员在使用 javascript 时经常遇到的问题。所以你在熟悉的领域。查看***.com/questions/14382567 和***.com/questions/2637626 【参考方案1】:这就是回调的工作方式。 subscribe
将回调函数作为参数。我建议您在继续之前了解什么是回调以及它们是如何工作的。
这里有一些关于subscribe
工作原理的信息:ReactiveX subscribe function
Robin 在forkJoin
的回答中提供了一个很好的解决方案。 forkJoin
将多个 Observable 发出的值连接到一个数组中,并创建一个新的 Observable。然后,您可以订阅这个 Observable,就像 Robin 在他的示例中所做的那样,以获取作为回调的第一个参数的数组值。
【讨论】:
【参考方案2】:这完全有道理。您正在订阅异步流。你不能指望他们按顺序完成。如果您希望它们同时完成,您可以执行以下操作:
Observable.forkJoin(this.getInterviewFromDB(), this.getMeetingsFromDB())
.subscribe(res =>
let interviews = res[0];
let meetings = res[1];
)
【讨论】:
mr.Robin 感谢您的关心,但我还是不清楚.. 可以稍后给我解释一下吗?! 它是RxJs
。你可以在那里阅读更多关于它的信息:github.com/Reactive-Extensions/RxJS记住一切都是异步的。以上是关于订阅功能无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章