2013-06-12 42 views
1

下面的脚本使用的setTimeout()等待一个变量获得的值(由另一个脚本加载异步产生它的价值):的脚本等待一个变量被加载,替代的setTimeout

function optinLoad(){ 

    if (!isEmpty(prefSource)){ 
     // do something 

    } else { 
     setTimeout(function() { 
      optinLoad(); 
     }, 100); 
    } 
} 

有没有更好的方法来处理此旁边的setTimeout()...也许一个负载函数,它触发实例“prefSource”不是空的。

任何想法?

回答

1

既然你已经标记这与jQuery,使用承诺,他们已经向您提供:

optinLoad().done(function (perfSource) { 
    // Do Something 

}); 

function optinLoad() { 
    dfd = $.Deferred() 

    var interval = setInterval(function() { 
    if (!isEmpty(prefSource)) { 
     clearInterval(interval) 
     dfd.resolve(prefSource); 
    } else { 
     // Do whatever to load prefSource 
    } 
    }, 1000); 


    return dfd.promise() 
} 
+0

泰的答案,我需要等待prefSource加载(其变量)并启动optinLoad功能 – user2065483