自从三天以来,我一直在尝试使用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; }
}
答案 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);
})
}
而不是
希望这会对你有所帮助。