In una pagina di login, ho questa funzione al momento della presentazione della pagina:Angular 2, come usare setTimeout?
checkLogin(){
this.x_userS.getLogin(this.x_userO.login_name, this.x_userO.pwd_plain).then(response => this.x_userO=response);
(function(){
setTimeout(() => {
if (this.x_userO.login_status == "1") {
this.x_companyS.getCompanyByUser(this.x_userO.user_id).then(response => this.x_companyO=response);
(function(){setTimeout(() => {
this.x_userS.setUser(this.x_userO);
this.x_companyS.setCompany(this.x_companyO);
this.router.navigate(['HomePage']);
}, 2000);
})();
}
else {
window.alert("oops");
}
}, 2000);
})();
}
dove x_userS è il servizio di accesso e x_userO è l'oggetto utente. Sto cercando di dare le promesse due secondi per restituire i dati prima di elaborarli. Senza il setTimeout, non lo restituisce in tempo.
Ho provato a rimuovere tutto tranne l'avviso e verificato che è successo dopo due secondi. Tuttavia, non riconosce nessuna delle altre cose all'interno di function() {}, quindi credo di dover passare tutti i miei servizi e oggetti.
Qualcuno sa come fare?
Credo che si usi $ timeout – user5680735
Il timeout $ è solo per Angular 1; vedi http://stackoverflow.com/a/40402767/132374 –