我如何才能将 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
。
我是处理 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
。