您好我需要在发布json对象后得到一些响应,使用toPromise,它的代码,响应是未定义的:
export class ApiStorage{
constructor( @Inject(Http) private http: Http ){}
rs(){
this.http.post('http://0.0.0.0:80/student/outbound', this.json, headers)
.toPromise()
.then(response => {
respond = JSON.stringify(response);
return respond; //<- edited
})
.catch((error: any) => {
...
});
}
}
然后在主要组件中使用
send(){
respondJSON = apistorage.rs();
console.log(respondJSON);
}
respondJSON未定义
答案 0 :(得分:4)
respond
将始终在您的代码中未定义,因为您正在对Web服务进行异步调用,在登录到控制台之前您不会等待它。
export class ApiStorage{
constructor( @Inject(Http) private http: Http ){}
rs() {
return this.http.post('http://0.0.0.0:80/student/outbound', this.json, headers)
.toPromise()
.then(response => {
let respond = JSON.stringify(response));
return respond;
})
.catch((error: any) => {
...
});
}
}
// rs now returns a promise, which can be used like this
// inside another function
send() {
apistorage.rs().then(res => {
console.log(res);
}
}