私はビルド中のモバイルアプリケーションを持っていますし、今は認証に取り組んでいます。ホームページにアクセスする前に、ユーザーにデータを表示する前に、作成したAPIのさまざまなエンドポイントをヒットする必要があります。角2は複数の非同期メソッドを呼び出します
郵便配達でテストした場合、すべてのエンドポイントが正しいデータを返していますが、私のアプリケーションでは2番目の非同期コールでnull
という値が得られます。
私はそれがこれらの呼び出しが行われる順序と関係があると確信していますので、私はちょうど1つの呼び出しが別の呼び出しを開始する前に終了するのを適切に待つ方法についていくつかの助けを探していました。
public login() {
this.showLoading();
this.userService.getUserIdFromUserName(this.registerCredentials.username) // WORKS
.subscribe(
res => {
console.log(res);
localStorage.setItem("UserId", res.toString());
},
err => {
console.log(err);
});
this.userService.getEmployeeIdFromUserId(localStorage.getItem("UserId")) // THIS RETURNS NULL
.subscribe(
res => {
console.log(res);
localStorage.setItem("EmployeeId", res.toString());
},
err => {
console.log(err);
});
this.authService.login(this.registerCredentials)
.subscribe(
data => {
this.loading.dismissAll();
console.log('User logged in successfully! ', data);
this.nav.push(TabsPage);
localStorage.setItem("Username", this.registerCredentials.username);
localStorage.setItem("isLoggedIn", "true");
},
error => {
this.loading.dismissAll();
this.showAlert("Uh oh!", "Something went wrong. Please re-enter your login credentials or check your connection.");
console.log(error);
});
}
タイトルは 'Angular2'が、キーワードは言う: あなたがC)並列に実行できる場合は、あなたが
.mergeMap()
の説明に手を必要とする場合は、この答えを見て、最後に.forkJoin()
.を見て「angularjs」と言う。あなたは2つのうちの1つを修正することを検討することができます – ConnorsFan
あなたは[この回答](http://stackoverflow.com/a/35268597/1009922)で必要なものを見つける必要があります。 – ConnorsFan