如何使用计时器setInterval获取http参数的增量?

时间:2017-09-13 16:55:39

标签: javascript reactjs fetch

我想用计时器做一个函数来获取页数,每当计时器运行一次,参数页面加1 这是我的代码---



constructor() {
    super();
    this.state = {
      data: '',
      page: 0 ,
    }
  }

  myFunc = () => {
    let myFetchOptions = {
      method: 'GET',
    };

    fetch("http://xxx/Api/screen/screenByAll.ashx?Status=All&ActionNm=8080&page="+this.setState( (page) => page++ )+"&rows=10",myFetchOptions)
    .then( (response) => response.text() )
    .then( (responseText) => {
      const json = JSON.parse(responseText);
      return json;
    } )
    .then(json => this.setState({data: json}) )
    .catch( (error) =>{
      console.error(error);
    } );

  }

  componentWillMount(){
    setInterval(this.myFunc, 3000);
  }




1 个答案:

答案 0 :(得分:0)

首先,setState是一个异步函数,组件的状态不会立即发生变异。我猜一些递归可以为你完成这项工作。 setState有第二个参数,它是一个在状态静音后调用的回调函数。您可以将参数添加到myFunc(pageNum)并检查它是否小于或等于您想要的页面数,并且在获取页面后调用相同的函数myFunc(pageNum + 1)。

如果你仍然需要函数调用之间的间隔,请在setTimeout中添加myFunc(pageNum + 1),如:

setTimeout(() => {this.myFunc( pageNum + 1)}, 3000)

并在componentWillMount

中调用myFunc(0)