返回的Javascript Fetch API状态未定义

问题描述 投票:0回答:3

随着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;
    });
}
javascript
3个回答
0
投票

请检查以下代码段,我的代码没有看到任何错误

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')

0
投票

将其转换为此

 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);
});

0
投票

问题是您试图通过编写异步代码来执行同步操作。您代码中的两个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');
})
© www.soinside.com 2019 - 2024. All rights reserved.