while循环在JavaScript

时间:2017-01-03 16:49:42

标签: javascript reactjs while-loop

首先,必须说这可能是一个setState问题,因为我遇到了一些问题,但我无法理解为什么这个while循环不起作用。

代码:

dealerTwisted = () => {
    console.log(this.state.dealersOverallTotal, 'total on entry');
    let looping = true;
    while(looping){
      console.log(this.state.dealersOverallTotal,'same');
      if(this.state.dealersOverallTotal < 17){
        this.deal2Dealer();
        let dealersDeck = this.state.dealersDeck;
        let newDealersDeckTotal = [];
        for (var i=0; i < dealersDeck.length; i++){
          newDealersDeckTotal.push(dealersDeck[i].rankValue)
        }
        let total = newDealersDeckTotal.reduce(function(a, b) {
          return a + b;
        },
        0);
        console.log(total, 'tot');
        this.setState({ dealersOverallTotal: total });
      }
      else{
        console.log(this.state.dealersOverallTotal, 'logging as greater than 17');
        if(this.state.playersOverallTotal > this.state.dealersOverallTotal){
          console.log('player wins!');
          looping = false;
        }
        else if (this.state.playersOverallTotal > this.state.dealersOverallTotal){
          console.log('its a tie!');
          looping = false;
        }
        else {
          console.log('dealer wins!');
          looping = false;
        }
      }
    }
  };

我认为它的方式以及我希望它的工作方式如下: 调用该函数,输入循环,如果this.state.dealersOverallTotal小于17,则输入if块,然后总计更新,然后再次开始循环。你继续输入if块,直到你得到一个高于17的数字。一旦你进入了else块,然后你在那里遇到的任何条件,你就会爆发。

有趣的是我刚刚调试并发现这一行(第一个控制台日志)console.log(this.state.dealersOverallTotal, 'total on entry');每次都给我相同的数字,即内部没有更新。谁能明白为什么?

1 个答案:

答案 0 :(得分:0)

React的 IEnumerable<RepoItemInfo> myQuery = from things in repo.FO.FLOW2FO.Container2.SelfInfo.Children where String.Equals(things.Name, repoItemName) select things; 是异步的,因此setState永远不会达到17。

setState in reactjs is Async or Sync