找不到变量:方法

时间:2017-11-14 07:42:14

标签: javascript react-native ecmascript-6

抱歉,我是新手,对原生和es6做出反应,现在我的API提取功能出现了问题。

componentDidMount() {
      console.log("here");
      this._onPressButtonGET(0)
    }


  renderList = (data) =>{
    if(data){
      return data.map((item) => {
        return(
          {
            rOrder: item.rOrder,
            title: item.title,
            intro: item.intro,
            url: item.url,
            img: item.img,
          }
        )
      }
    )
  }
}

  async _onPressButtonGET(data) {
    console.log("here1");
    try {
        let response = await fetch(api.novel, method:"GET")
        let json = await response.json()
        console.log("here2");

        let dataList = this.renderList(responseData.data.carousel);

        for (  data = 0 ; data < 5; data++){
          if (dataList[data] == null) break;
          console.log(dataList[i]);
        };

        this.setState({ pValue:data })

      } catch (error) {
        console.log("here3");
        this.setState({ refreshing: false })
        alert(error)
      }
  }

警告上面给我ReferenceError:找不到变量:方法。 console.log“here 2”无效。我可以成功获取数据而无需异步/等待mehtod,但目前,我有点需要async / await。请帮助我完成这些功能。

 _onPressButtonGET(data) {
          fetch(api.novel, {method: "GET"})
          .then((response) => response.json())
          .then((responseData) => {
               let dataList = this.renderList(responseData.data.carousel);
               //console.log(dataList);
               //console.log(dataList[1]);
               //let i = 0;
               for (  data = 0 ; data < 5; data++){
                 if (dataList[data] == null) break;
                 //console.log(dataList[i]);
               };
               console.log("outloop" +data);
               this.setState({ pValue:data })
          })
          .done();

      }

我使用另一个函数来使此获取成功,但不是使用async / await。现在我很好奇这是如何工作的?为什么async / await one不起作用?

1 个答案:

答案 0 :(得分:2)

错误在这一行:

let response = await fetch(api.novel, method:"GET")
//                                    ^

method在引号之外,作为变量名,但它从未在任何地方声明过。

您可能打算将init object传递给fetch API

let response = await fetch(api.novel, { method: "GET" })
//                                    ^ passing an object, notice the { }

您也可以省略方法类型(默认为“GET”):

let response = await fetch(api.novel)