【问题标题】:How I can get transform Promise to something like a list?如何将 Promise 转换为列表之类的东西?
【发布时间】:2017-01-28 04:33:38
【问题描述】:

我是处理 Angle 2 的新手,我开发了一个服务 REST API,它返回一个 JSON 字符串。发出请求的代码如下:

getUsuaris(): Promise<Usuari> {
    return this.http.get(this.URLUsuaris)
        .toPromise()
        .then(response => response.json().data as Usuari[])
        .catch(this.handleError);
}

下面的代码是一个简单的登录,没有更多的,但不是因为authenticatedUserList的原因是NULL,并且obiamente它的属性。

private URLUsuaris = 'http://localhost:50541/api/Usuaris';

constructor(
    private _logger: Logger,
    private _router: Router,
    private http: Http) { }

logIn(usuari: Usuari) {

    var authenticatedUserList: Promise<Usuari> = this.getUsuaris();
    var authenticatedUser: Usuari;

    this._logger.log(authenticatedUserList[0]);

    for (var i in authenticatedUserList) {
        if (authenticatedUserList[i].usuari === usuari.Usuari1) {
            authenticatedUser = authenticatedUserList[i];
            break;
        }
    }

    if (authenticatedUser && authenticatedUser.Password === usuari.Password){
        localStorage.setItem("usuari", authenticatedUser.Usuari1);
        this._router.navigate(['Home']);

        this._logger.log(localStorage.getItem("usuari"));
        this._logger.log('Usuari Registart!');

        return true;
    }
    this._logger.log('Usuari No Registart!');
    return false;
}

带有 REST API 的服务器正确返回信息!

发送 API 的用户类:

export class Usuari {
    public Id: number;
    public Usuari1: string;
    public Password: string;

    constructor(usuari: string, password: string) { }
}

如果您有任何想法可能导致解释失败,请不要在未来遇到同样的错误。

非常感谢!!

【问题讨论】:

    标签: json angular login promise angular2-services


    【解决方案1】:

    你需要像这样使用 promise 的返回:

    private URLUsuaris = 'http://localhost:50541/api/Usuaris';
    
    constructor(
        private _logger: Logger,
        private _router: Router,
        private http: Http) { }
    
    logIn(usuari: Usuari) {
    	return this.getUsuaris().then((authenticatedUserList)=>{
    		var authenticatedUser: Usuari;
    
    		this._logger.log(authenticatedUserList[0]);
    
    		for (var i in authenticatedUserList) {
    			if (authenticatedUserList[i].usuari === usuari.Usuari1) {
    				authenticatedUser = authenticatedUserList[i];
    				break;
    			}
    		}
    
    		if (authenticatedUser && authenticatedUser.Password === usuari.Password){
    			localStorage.setItem("usuari", authenticatedUser.Usuari1);
    			this._router.navigate(['Home']);
    
    			this._logger.log(localStorage.getItem("usuari"));
    			this._logger.log('Usuari Registart!');
    
    			return true;
    		}
    		this._logger.log('Usuari No Registart!');
    		return false;
    	});
    }

    这也改变了 logIn 方法的返回,现在它返回 Promise&lt;boolean&gt; 而不是 boolean。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 2013-06-02
      • 2015-09-29
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多