欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

[自定回调函数]怎么在settimeout函数外做timeout之后的回调函数

更新时间: 2014-01-05 01:51:00 责任编辑: Author_N1

 

[自定回调函数]如何在setTimeout函数外做timeout之后的回调函数?
如题,我把一个没有回调接口的(我看不懂的)异步模块比作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
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:51:00
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1993/
本文WWW.DOC100.NET DOC100.NET版权所有。