你好,我需要在发布 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);
    }

responseJSON 未定义

最佳答案

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

关于javascript - 获取 Post angular 2 toPromise HTTP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44921504/

10-12 00:12