如题,我把一个没有回调接口的(我看不懂的)异步模块比作setTimeout(应该可以这样比吧?),然后有以下代码:
function main(callback) {
var a = 10;
setTimeout(function(){
a+=1;
},1000);
callback(a);
}
function b(a){
alert(a);
}
main(b); //alert结果是10,不是11
问题:请问当不把callback放进setTimeout的回调的话,如何在time out完成后才调用callback呢?
不结帖没jb
------解决方案--------------------
就单说异步的那块吧,
这种情况只有两种方法改变吧,
一个就是把异步改为同步,
另一个就是放在回调函数里面。
或者,你在外面做一个计时器,一直执行的那种,就是这样。。。
function main(callback){
var a = 10,flag = false;
setTimeout(function(){
a++;
flag = true;
},1000);
function aaa(){
if(flag){
callback(a);
}else{
setTimeout(aaa,200);
}
}
aaa();
}
function b(a){
alert(a);
}
main(b);
其他的办法,暂时就想不到了。
------解决方案--------------------
1、回调函数
2、同步请求
3、setTimeout 去监视是否执行完毕
------解决方案--------------------
不修改那个没有回调接口的异步模块情况下只有定时检测a的值一个办法了
function main(callback) {
var a = 10;
setTimeout(function(){
a+=1;
},1000);
var temp = a;
var _Inter = setInterval(function(){
if(temp!=a)
{
clearInterval(_Inter);
callback(a);
}
},100);
}
function b(a){
alert(a);
}
main(b); //alert结果是10,不是11