使用导入的类在ES6中返回空承诺

时间:2016-03-19 23:28:22

标签: javascript promise ecmascript-6 es6-promise

我有一个问题,为什么我的回复被退回并打印为未定义。

这是我在main.js中的方法:

find() {
        return this.serviceFactory
            .createRequest()
            .withId(333)
            .sendAsGet().then(response => {
                console.log(response);
            });
    }

上面的console.log(响应)是我得到未定义响应的地方;

这是用作this.serviceFactory

的导入类
export class ServiceFactory {
    constructor(http) {
        this.http = http;
        this.http.baseUrl = serviceUrlParts.baseUrl;
        this.endpoint = "";
        this.id = "";
    }

    createRequest() {
        return this;
    }

    withId(id) {
        this.id = id;
        return this;
    }

    setEndPoint(endpoint){
        this.endpoint = serviceUrlParts.baseUrl + endpoint;
    }

    sendAsGet() {
        return this.http.get(`${this.endpoint}/${this.id}`)
            .then(response => {
                this.parseJSONContent(response);
            }).catch(error => {
                console.log(error);
            });
    }

    parseJSONContent(response) {
        console.dir(JSON.parse(response.content));
        return JSON.parse(response.content);
    }
}

parseJSONContent方法中的console.dir(JSON.parse(response.content))正在打印出从API返回的正确对象。在某个地方回到通话中它正在丢失。我们将非常感谢您对错误发生的一些看法!

1 个答案:

答案 0 :(得分:2)

此处不返回值:

.then(response => {
    return this.parseJSONContent(response);
})

将其更改为:

.then(response => this.parseJSONContent(response))

margin-left:20px;