gpt4 book ai didi

javascript - 在组件初始化之前加载数据 - angular 2

转载 作者:行者123 更新时间:2023-11-30 09:39:11 24 4
gpt4 key购买 nike

我的 App.component 在我的 user service 中调用了一个 init 方法。

ngOnInit(){
this.init(true).then(data => {
console.log("OnInit Called")
})
}

User.service 返回一个 promise,后者又调用 account.init

init = (isRegistered) => {
return new Promise((resolve, reject) => {
this.account.init(isRegistered).then(data => {
//some data inialization
console.log("OnInit Called User Service")
});
});
}

Account.service 返回一个使用 Observable.forkJoin 调用多个服务的 promise

init = ((userType: boolean) => {
return new Promise((resolve, reject) => {
Observable.forkJoin([
this.m1,
this.m2]).subscribe(data => {
//persist those return data
});
});
}
  1. 为什么两个 console.log 语句都没有执行?
  2. 为什么它不在 Observable.forkJoin 完成其服务调用之前阻止组件初始化?

最佳答案

  1. (和 2.)调用 resolve(...) 丢失
init = (isRegistered) => {
return new Promise((resolve, reject) => {
this.account.init(isRegistered).then(data => {
//some data inialization
console.log("OnInit Called User Service")
resolve(/*someValue */); // <<<== missing
// or reject(/* someValue */);
});
});
}
  1. 为什么你期望它阻止任何东西? ngOnInit() 无法被阻止。例如,您可以使用 *ngIf 在数据尚不可用之前不显示任何内容。您还可以使用路由器防护来防止在数据可用之前创建组件。 https://angular.io/docs/ts/latest/guide/router.html#!#resolve-guard但是在 JS 中无法以任何方式阻止执行。

关于javascript - 在组件初始化之前加载数据 - angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com