1

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

function optinLoad(){

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

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

除了setTimeout()之外,还有更好的方法来处理这个......也许是一个加载函数,它触发了实例“prefSource”不为空。

有任何想法吗?

4

1 回答 1

1

由于您已使用 jQuery 标记此内容,因此请使用 promises,它们已经可供您使用:

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()
}
于 2013-06-12T16:43:36.210 回答