如何在反应js中完成其他异步过程之前停止主进程

时间:2017-06-02 18:09:30

标签: javascript reactjs asynchronous

我使用此代码从Firebase数据库获取一个字符串,数据以各种字符串分隔,我稍后将其存储在一个数组中但主进程一直运行并在值获取我想要的数据之前调用return方法。



class PromoActiva extends Component {

  constructor(props) {
        super(props);
        this.state={
          arrayActual:[]
        }

      var recibirArray;
      var user = firebase.auth().currentUser;
      var refDB=ref.child("adan1995a@gmail-com"+"/SlideActual");
      refDB.on('value', snapshot=> {
        recibirArray=snapshot.val().slideActual;
      var StringN="";
      var ArrayFg=[];
      for (var i = 0; i < recibirArray.length; i++) {
        if(recibirArray[i] =='~'){

          for (var j = i; j < recibirArray.length; j++) {
            if(recibirArray[j]!='~'){
              StringN += recibirArray.substring(j,j+1);
            }
            else if (recibirArray[j]=='~'&&j!=0||recibirArray[j+1]===null&&j!=0) {
              ArrayFg.push(StringN);
              StringN="";

            }
          }

        }
      }
      this.setState({
        arrayActual:this.ArrayFg});
      }  );
    }
&#13;
&#13;
&#13;

当我尝试访问state.arrayActual时,未定义,因为异步过程在主进程之后完成,这就是state.arrayActual永远不会获取值的原因。

&#13;
&#13;
  return(
        <div>
        <div id="carousel-main">
        <div style={{ margin:20}}>
          <React_Bootstrap_Carousel
            animation={true}
            onSelect={this.onSelect}
            className="carousel-fade"
          >

          {this.state.arrayActual.map(listaImgs=>{
            return (<CaroucelArray url={listaImgs}/>);})
          }
          </React_Bootstrap_Carousel>
        </div>
        </div>
        <h1>Tu slide actual</h1>
        </div>
      )
&#13;
&#13;
&#13;

0 个答案:

没有答案