是否可以使用fetch返回JSON对象?

时间:2018-06-09 19:18:22

标签: json reactjs fetch jsx

自从三天以来,我一直在尝试使用fetch API来获取JSON对象,我搜索了大多数我能找到的线程。 所以我有一个使用fetch的函数,我希望这个函数返回一个JSON对象,但是当我尝试打印它时,它是一个Promise对象。我发现fetch IS实际上返回了Promise对象。因此,如果fetch无法返回JSON对象,我如何从Promise对象获取JSON对象? _ParseJSON中的console.info正确打印了我想要的JSONObject,但是在获取之后,重建JSON是不可能的。

import React from 'react';

export class JSONObject {
constructor(_url) {
    this.URL = _url;
    this.importedJSON = null;

    this.state = {}; //Init getter setter
}

ParseCurrentUrl() {
    this.importedJSON = this._ParseJSON();
    console.info(this.importedJSON);
}

_ParseJSON() {
    return fetch(this.URL)
        .then(response => response.json())
        .then((responseJSON) => {
            const { statusCode, data } = responseJSON;
            console.info("_PARSE");
            console.info(responseJSON);
            return responseJSON;
        })
        .catch((e) => {
            console.error(e);
        })
}

set URL(_newUrl) { this.constructor.URL = _newUrl; }
get URL() { return this.constructor.URL; }
}

1 个答案:

答案 0 :(得分:0)

你说过那个

_ParseJSON中的console.info正确打印了我想要的JSONObject,但是在获取之后,无法重构JSON

因为您无法在promise中返回值。

课程异步功能不会返回(或至少不能可靠地返回)

如果你想在异步函数之后发生某些事情,你需要在异步函数中调用它

你可以使用

_ParseJSON() {
    return fetch(this.URL)
        .then(response => response.json())
        .then((responseJSON) => {
            const { status, data } = responseJSON;
            console.info("_PARSE");
            console.info(responseJSON);
            // set the value you want as an example
            this.importedJSON = responseJSON;
        })
        .catch((e) => {
            console.error(e);
        })
}

而不是

希望这会对你有所帮助。