Javascript API以承诺方式返回数据,但可以';不能转换为字符串
我正在尝试获取外部API的项,尽管结果显示在控制台中,但在尝试提取数据并将其解释为HTML输出时遇到了一些问题 例如,我创建了一个名为makeRequest的const,它从API中提取数据。当我试图将数据转换为字符串或使用innerHTML提取到类中时,我得到的是“对象承诺”或未定义 我被难住了。有什么想法吗?我肯定我错过了一些明显的东西,但我没有练习JS很长时间 编辑:我能够将数据返回到控制台日志,但我无法将该响应转换为字符串并解析为HTMLJavascript API以承诺方式返回数据,但可以';不能转换为字符串,javascript,json,api,Javascript,Json,Api,我正在尝试获取外部API的项,尽管结果显示在控制台中,但在尝试提取数据并将其解释为HTML输出时遇到了一些问题 例如,我创建了一个名为makeRequest的const,它从API中提取数据。当我试图将数据转换为字符串或使用innerHTML提取到类中时,我得到的是“对象承诺”或未定义 我被难住了。有什么想法吗?我肯定我错过了一些明显的东西,但我没有练习JS很长时间 编辑:我能够将数据返回到控制台日志,但我无法将该响应转换为字符串并解析为HTML 这不是承诺的工作方式。then()和catch
这不是承诺的工作方式。
then()
和catch()
回调中的位在其余代码之后执行。因此,您的makeRequest
变量将是一个Promise对象,您不能将其转换为字符串。这不是真正的数据,而是在未来某个时候交付数据的承诺
您要对承诺的数据执行的任何操作都必须在回调中完成,如下所示:
//Request is defined and
const request = options => {
return fetch(options)
.then((response) => {
//this gets passed on to other .then() calls
return response.json();
})
.catch(error => console.error(error));
};
const makeRequest = request('https://api.punkapi.com/v2/beers?abv_gt=6')
.then(data => {
//this will get the response.json() result from the fetch callback above
var res = data.toString();
document.getElementById("beers").innerHTML = res;
});
//Request is defined and
const request = options => {
return fetch(options)
.then((response) => {
//this gets passed on to other .then() calls
return response.json();
})
.catch(error => console.error(error));
};
const makeRequest = request('https://api.punkapi.com/v2/beers?abv_gt=6')
.then(data => {
//this will get the response.json() result from the fetch callback above
var res = data.toString();
document.getElementById("beers").innerHTML = res;
});