Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在fetch HTTP请求之后,调用方函数未接收数据_Javascript - Fatal编程技术网

Javascript 在fetch HTTP请求之后,调用方函数未接收数据

Javascript 在fetch HTTP请求之后,调用方函数未接收数据,javascript,Javascript,我有一个js函数fetch,需要获取一些数据,然后我还有其他函数依赖于获取的信息才能工作。因此,我的获取时间太长,因此其他函数会给我一个错误,即没有函数可使用的“数据”。我如何使它在我的任何函数开始工作之前,首先获取收集信息 console.log("Hello"); fetch("https://api.propublica.org/congress/v1/113/senate/members.json",{ method:"GET", headers:{

我有一个
js
函数fetch,需要获取一些数据,然后我还有其他函数依赖于获取的信息才能工作。因此,我的获取时间太长,因此其他函数会给我一个错误,即没有函数可使用的“数据”。我如何使它在我的任何函数开始工作之前,首先获取收集信息

console.log("Hello");

fetch("https://api.propublica.org/congress/v1/113/senate/members.json",{
        method:"GET",
        headers:{
                 "Content-type": "application/json",
                 "X-API-Key": "eKDuyBWdpQGhsiKGi7geFoBmJR3kCRIRUGRWIASL" 
    }
})
    .then( (response)=>{
        if(response.ok){
            return response.json();
        }else{
            throw new Error('BAD HTTP stuff');
        }
    })
    .then( (data) => {
        console.log(data);
    })
    .catch( (err) =>{
        console.log('ERROR: ', err.message);
    });  
我得到的错误是

“未捕获引用错误:未定义数据” 在houAtt.js:1,然后第一行是:var members=data.results[0].members


当您依赖使用
AJAX
检索的数据时,您应该等待从中接收数据

假设API函数是

function callAPI(){
    return fetch("https://api.propublica.org/congress/v1/113/senate/members.json",{
            method:"GET",
            headers:{
                     "Content-type": "application/json",
                     "X-API-Key": "eKDuyBWdpQGhsiKGi7geFoBmJR3kCRIRUGRWIASL" 
        }
    });
}
此函数将返回
HTTP
承诺

因此,在调用者函数中可以捕获数据

function caller(){
  try {
    callAPI().then( (response)=>{
      if(response.ok){
        console.log(response.json());
      }else{
        throw new Error('BAD HTTP stuff');
      }
    });
   } catch(err) {
        console.log('ERROR: ', err.message);
   };  
}
你试过像这样同步吗?
您还可以分享更多关于如何获取内容以及函数如何依赖于响应的信息吗?这将有助于回答您的问题

您能告诉我们您需要在哪里使用
响应
?您的其他给出错误的函数在哪里?。从您的代码中,我看到您没有返回
Promise
对象。看起来您希望结果是同步的,但事实并非如此。其他功能在执行之前必须等待响应您的代码甚至不会将检索到的
数据放在任何地方-因此
(数据)=>{console.log(数据);}
是唯一可以使用它的地方
fetch(..)
.then(response)
.then((data)=>{
    //Your function code
});