JavaScript关于自调用循环函数解决代码加载顺序的问题

实际编程中,我们经常需要解决关于controler层代码的执行顺序问题。例如,我要发送一个请求获得一个参数后才能执行下面的代码,由于发送请求是一个异步的操作,在发送后并不会等待参数回来后才执行下面的代码,而我们经常碰到下面的代码需要使用请求后的参数,这种情况就需要使用到自调用函数循环和延迟操作。

var self = this;

var flag = false;

var promise = createVmSer.query(); //假设为请求的接口

promise.then(function(data){

self.lode = data.lode;                  //假设我们需要使用lode这个参数

...

flag = true;                                     //当flag为true时,表示已经查询到lode这个参数了

});

function loding(){

var status = self.lode;

...

reloded(status);

}

if(!flag){

(function waitlode(){

 //按照实际情况填写条件,主要是校验lode是否真的有值,如果没有就延迟一秒再调用waitlode(),如果有就执行loding()并且取消延迟方法的执行,结束循环

var tem = null;

if(self.lode){

loding();

tem != null && clearTimeout(tem);

}else{

tem = setTimeout(waitlode , 1000);

}

}())

}else{

loding();

}


猜你喜欢

转载自blog.csdn.net/lixiwoaini/article/details/79575120