-2

我有一个 Angular 4 登录应用程序。我想要登录同步操作但异步?你能帮助我吗?

数据服务.ts:

login(userName: string,pwd: string): Promise<User>  {
    const url =`loginLdap/${userName}&${pwd}`;  
    return this.http.get(url).toPromise()
    .then(response => response.json() as User)
    .catch(this.handleError);
}

user.service.ts :

public authenticate( userName: string, pwd: string): Observable<User>{
    this.dataService.login(email, password).then(items => this.items = items);
    console.log(this.items);

    if (this.items.success) {
        this._authenticated = true;
        ...
        return Observable.of(User);
    }else{ 
        return Observable.throw(new Error("System Error"));
    }

}
4

1 回答 1

0

请看一下 Rxjs forkJoin 运算符。它将允许您链接多个 Observable,然后在所有 Observable 都发出后采取行动。在 forjoin 主体内添加您的 if/else 逻辑。这将是一种优雅的方式来完成你正在寻找的东西。

如果您在获取此设置时遇到问题,请创建一个 plunkr,我们可以一起完成它。

如果您在使其正常工作时没有问题,请发布生成的文件以供其他人在您按要求工作时查看。

于 2018-02-25T20:16:11.143 回答