和&amp ;,无法制作jquery然后在函数返回之前完成

时间:2014-05-21 20:53:02

标签: jquery return .when

我希望执行顺序如下。  1. unattach(x)  2. updateLists(y)  3. console.log("已完成功能更新执行")

只有在两个函数(unattach和updateLists)都已完成执行后,才会返回更新函数。问题是我无法让它等待两个函数完成执行。返回声明中有什么问题吗?

    function main()
    {
        when(update).then(function(){
        console.log("completed execution of function update");
        });
    }

    function update()
    {
    return when(function(){
            unattach(x);
            }).then(function(){
                    updateLists(y);
                    }); 
    }

1 个答案:

答案 0 :(得分:1)

我会使用回调来重写它。无论如何,你应该写更多的代码。

function main() {

    update(function(){
       console.log("completed execution of function update");
    });

}

function update(callback){
        unattach(x, function(){
           updateLists(y, function(){
              if(callback){
                 callback();
              }
            });
        }); 
}

假设函数unattach和updateLists中有两个AJAX调用,你可以这样做:

function unattach(x, callback){
   // if JQuery

   $.ajax({
      ....
      success: function(){
         if(callback){
           callback();
         }
      }
   });
}

以同样的方式定义updateLists,以便在AJAX完成其工作时调用回调函数。