随着XMLHttpRequest的弃用,我一直试图重写一个JavaScript函数,该函数通过使用Fetch检查url是否存在。我的控制台日志生成正确的值,但我的return语句始终未定义。我在做什么错?
function urlExists(url) {
var request = new Request(url);
return fetch(request).then(function(response) {
console.log(response.status);
return response.status != 404;
});
}
请检查以下代码段,我的代码没有看到任何错误
function urlExists(url) {
var request = new Request(url);
return fetch(request)
.then(function(response) {
console.log(response.status);
return response.status != 404;
})
}
urlExists('https://jsonplaceholder.typicode.com/comments')
[如果您想查看解析json所需的数据,并记录数据,如下所示
function dataExists(url) {
var request = new Request(url);
return fetch(request)
.then(function(response) {
console.log(response.status);
return response.json()
})
.then(data => console.log(data))
}
dataExists('https://jsonplaceholder.typicode.com/comments')
将其转换为此
function urlExists(url) {
return new Promise((resolve,reject)=>{
var request = new Request(url);
fetch(request).then(function(response) {
resolve(response.status != 404);
});
});
}
使用
urlExists("https://www.google.com").then(result=>{
console.log(result);
});
问题是您试图通过编写异步代码来执行同步操作。您代码中的两个return语句都与它们各自的范围有关。您需要具有callback才能从访存中返回响应。
function urlExists(url, callback) {
var request = new Request(url);
fetch(request).then(function(response) {
console.log(response.status);
callback(response.status != 404);
});
}
/* Usage */
urlExists('http://example.com', (isExist) => {
if(isExist) {
console.log('URL found');
}
console.log('URL not found');
})