我如何才能将 Promise 转换为列表之类的东西?

How I can get transform Promise to something like a list?

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

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

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

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;
}

服务器用RESTAPIreturns信息正确!

用户 class 发送 API:

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

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

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

非常感谢!!

您需要像这样使用承诺的return:

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 方法的 return,现在 return 是 Promise<boolean> 而不是 boolean