我正在尝试使用Flickr API在网站上显示一些公共照片。但是我遇到了一些我绝对无法发现的错误。 最奇怪的是,代码在几天前运行良好,调试显示查询按预期进行。问题似乎在于解决fetch()返回的承诺。
function getPhotos(){
const url = `${URL}${queryString('getPhotos')}`;
fetch(url)
.then((resp) => {
const w = resp.json();
return w;
// get different results if with
// return resp.json();
});
}
在此调试调试中,使用uncommented方法,promise的状态最终会实现。看着json对象,我可以看到下面的所有照片。 如果我确实直接返回resp.json(),则返回undefined
async function generatePhotos(list) {
const list = await getPhotos();
list.then((resp) => {
// always get 'list is undefined' error
// JSON.parse(list);
const photos = resp.photo;
for (let i = 0; i < 3; i++) {
generateImgElem(photos[i].id);
}
});
}
无论getPhotos()返回什么,此函数都将无法工作,诺言总是以待处理状态出现。
我在这里做错了什么?我搜索了一堆,据我所知,我正在正确地使用提取API。
编辑: 我收到变量列表未定义的错误。
function getPhotos(){
const url = `${URL}${queryString('getPhotos')}`;
fetch(url)
.then((resp) => {
return resp.json();
});
// passes in undefined whether I stringify or not
// .then((json) => {
// return JSON.stringify(json);
// });
}
答案 0 :(得分:0)
尝试
async function getPhotos(url) {
const response = await fetch(url);
const json = await response.json();
return json;
}
当您执行提取请求时,将需要一些时间来返回某些内容。 因此,您很可能会返回未完成的承诺。 使用异步将确保提取请求已完成。
将其变成一个对象。
@gunnnnii阻止您执行操作的原因是让myObject = JSON.parse(stringifiedThing);? –阿迪1分钟前