我的代码如下:
let courses = '';
fetch(link)
.then(function(response) {
return response.json();
}).then(function(json) {
courses = json;
}).catch(function(ex) {
console.log('parsing failed', ex);
});
使用console.log(courses)
打印出''。
如何将其设置为检索到的json?
答案 0 :(得分:0)
fetch
方法是异步的,实际上,在courses
promise结算后,您只能访问fetch
变量中的json内容。尝试执行以下操作:
function synchronousCode(courses) {
console.log('courses', courses); // output json courses
}
fetch(link)
.then(function(response) {
return response.json();
})
.then(synchronousCode)
.catch(function(ex) {
console.log('parsing failed', ex);
});
使用Fetch API的一个好处是,您可以整齐地链接您的方法,而不是只有一个“synchronousCode
”函数。这是一个例子:
function asynchronouslyAnalyze(courses) {
return new Promise(function(resolve, reject) {
setTimeout(function () { resolve(courses) }, 1000);
});
}
function parse(courses) {
// do something with courses
return courses;
}
function print(courses) {
console.log('courses', courses); // output courses json
}
function toJSON(response) {
return response.json();
}
fetch(link)
.then(toJSON)
.then(asynchronouslyAnalyze)
.then(parse)
.then(print)
.catch(function(ex) {
console.log('parsing failed', ex);
});
我希望有所帮助!