以下脚本使用setTimeout()等待变量获取值(它的值由另一个加载异步的脚本生成):
function optinLoad(){
if (!isEmpty(prefSource)){
// do something
} else {
setTimeout(function() {
optinLoad();
}, 100);
}
}
有没有更好的方法来处理这个旁边的setTimeout()...也许一个加载函数,触发实例“prefSource”不是空的。
有什么想法吗?
答案 0 :(得分: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()
}