Javascript 等待异步加载的类完成(无回调)

Javascript 等待异步加载的类完成(无回调),javascript,jquery,asynchronous,Javascript,Jquery,Asynchronous,在调用类之前,等待异步加载类的正确方法是什么 注意:我处于一个复杂的环境中,无法使用异步加载回调 这是最好的方法吗 callClassFunction : function () { try { waitingOnThisClass.someFunction(); } catch (e) { setTimeout("superClass.callClassFunction()",250); } } *如果有…那么jQuery方法值得一提。如果允许jQuery—jQu

在调用类之前,等待异步加载类的正确方法是什么

注意:我处于一个复杂的环境中,无法使用异步加载回调

这是最好的方法吗

callClassFunction : function () {
  try {
    waitingOnThisClass.someFunction();
  } catch (e) {
    setTimeout("superClass.callClassFunction()",250);
  }
}

*如果有…

那么jQuery方法值得一提。如果允许jQuery—jQuery承诺接口和jQuery.Deferred就是这样:

// Create a Deferred and return its Promise
function asyncEvent(){
    var dfd = new jQuery.Deferred();
    setTimeout(function(){
        dfd.resolve("hurray");
    }, Math.floor(Math.random()*1500));
    setTimeout(function(){
        dfd.reject("sorry");
    }, Math.floor(Math.random()*1500));
    return dfd.promise();
}

// Attach a done and fail handler for the asyncEvent
$.when( asyncEvent() ).then(
    function(status){
        alert( status+', things are going well' );
    },
    function(status){
            alert( status+', you fail this time' );
    }
);
另一个例子

function doAjax(){
   return $.get('foo.htm');
}

function doMoreAjax(){
   return $.get('bar.htm');
}

$.when( doAjax(), doMoreAjax() )
   .then(function(){
      console.log( 'I fire once BOTH ajax requests have completed!' );
   })
   .fail(function(){
      console.log( 'I fire if one or more requests failed.' );
   });

我要做的一个更改是去掉try/catch,改为测试函数是否存在(尚未存在):

请注意,您不需要明确地说

if (waitingOnThisClass != undefined
    && typeof waitingOnThisClass.someFunction === "function")
因为如果它们以对象/函数的形式存在,它们将被评估为“真实的”


(如果您确实使用了try/catch,并且函数已加载,但其中有一些错误,这不会触发catch并只是再次重复运行该函数吗?

什么是
异步类
?这是真的吗?我尝试了facebook的Javascript API
if(FB)
,IE Break说FB是未定义的…就好像它只是在条件中被破坏了一样…我将尝试在其中添加函数并查看。谢谢我将在周一回到这个论坛+1感谢您指出try/catch的问题非常感谢您提供的信息!周末之后我必须研究这个jQuery解决方案!令人惊叹的!不知何故,jQuery1.5打破了我的平台,但这肯定会在未来派上用场!我很高兴它有帮助:)我在许多项目中使用延迟-当需要处理多个异步调用时,它们肯定非常方便。
if (waitingOnThisClass != undefined
    && typeof waitingOnThisClass.someFunction === "function")