等待加载变量的脚本,替代setTimeout

时间:2013-06-12 16:41:08

标签: jquery

以下脚本使用setTimeout()等待变量获取值(它的值由另一个加载异步的脚本生成):

function optinLoad(){

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

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

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

有什么想法吗?

1 个答案:

答案 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()
}