Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 如何修复';response.json不是一个函数';在异步/等待函数中_Javascript_Reactjs - Fatal编程技术网

Javascript 如何修复';response.json不是一个函数';在异步/等待函数中

Javascript 如何修复';response.json不是一个函数';在异步/等待函数中,javascript,reactjs,Javascript,Reactjs,试图将我的响应转换为json。我不太确定我得到的是TypeError:response.json不是一个函数错误。谁能给我指一下正确的方向吗。提前谢谢 componentDidMount(){ this.timingFunction = setInterval(() => this.getAllStations(), 1000); } async getAllStations(){ try{ const r

试图将我的响应转换为json。我不太确定我得到的是
TypeError:response.json不是一个函数
错误。谁能给我指一下正确的方向吗。提前谢谢

    componentDidMount(){
        this.timingFunction = setInterval(() => this.getAllStations(), 1000);
    }


    async getAllStations(){
        try{
            const response = await(`http:api.bart.gov/api/etd.aspx?cmd=etd&orig=${this.state.selectedStation}&key=${bartKey}&json=y`);
            const data = await response.json();
            console.log(`Here: ${data}`)


        }catch(e){
            console.log(`Error: ${e}`)
        }

    }
我希望看到json响应,但收到了错误消息。
编辑:在response.json()前面添加了wait;没有任何位置。

您缺少获取调用(或从api获取数据的任何其他调用)。现在,您似乎把
wait
误认为是函数

const response=wait(`http:api.bart.gov..

(您还缺少
http
之后的两个斜杠,但这还不是问题。)

试试这个:


const response=wait fetch(`http://api.bart.gov...

您正在使用wait作为函数

wait
是一个只等待承诺的系统,而不是执行承诺

const response=await('http:…')

你应该这样做

const response = await fetch('http:...');

为什么使用async..可以使用Promissions..@user7417866来完成这一点是正确的。然而,这也应该适用于async。async和await是用于承诺而不是从服务器/url获取数据的,最好的方法是使用ajax来获取服务器代码。更具体地说,await会导致异步函数暂停,直到承诺实现为止,但在您的情况下是它的获取来自URL的回复,而不是承诺者,非常感谢。我不敢相信我错过了。非常感谢FerryBig,我不敢相信我错过了。
您正在使用等待作为函数。
。不,这是
等待表达式
表达式
这里是
('http:…'))
,由于此处大括号不相关,因此等于
等待'http:…'
(如
const foo=('bar')
相当于
const foo='bar'
)“
await
表达式的右侧可以是任何类型的值,如果它不是承诺,那么它将转换为已解析的承诺。因此它本质上等同于
const response=await Promise.resolve('http:…');