代码之家  ›  专栏  ›  技术社区  ›  Jeppe Christensen

jQuery等待函数在新的激发之前完成

  •  0
  • Jeppe Christensen  · 技术社区  · 5 年前

    jQuery中有两个函数要按特定顺序启动。第一个函数是更新部分视图的ajax函数。另一个应该在部分视图上做一些样式设置,一旦ajax函数完成-这个函数接受一个参数。

    ajaxFunction();
    stylingFunction(params);
    

    ajaxFunction(function() {
        stylingFunction(params)
    });
    

    ajaxFunction(stylingfunction(params));
    
    ajaxFunction(callback)
    {
        //Do update
        callback()
    }
    

    但这些都不起作用。由于局部视图正在更新,样式将在其消失后不久出现。我在这里哪里做错了?

    这两个函数都是在我的“父”视图中编写的。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Brian Patterson    5 年前

    可以使用链接到$.ajax调用的.done()和.fail()。。。

    我在successCallback()中使用psuedo代码创建了两个回调函数,因为您说过只需要“有时”运行样式化函数。您将需要测试该函数中的任何条件,以确定是否要运行样式化函数。希望这有帮助。

    (function($) {
      $(function() {   //document.ready
    
        $.ajax({ cache: false,
            url: "/blah/vlah/lah",
            data: { somedata: somedata }
        })
        .done(successCallback)
        .fail(failCallback);
    
      });
    
        function successCallback(data) {
            if (someCondition) {
                stylingFunction(params);
            }
        };
    
        function failCallback(jqXHR, status, error) {
            console.log(jqXHR);
            console.log(error);
            console.log(status);
        };
    
    })(jQuery);
    

    我创建了另一个处理ajax事件委托的要点,您可能需要回顾和合并任何对您的情况有帮助的东西。 https://gist.github.com/inceptzero/a753d020648f49da90f8

    我还在github上为ajax请求队列创建了这个要点,它更加优雅和健壮。 https://gist.github.com/inceptzero/e64756f9162ca6aeeee5

        2
  •  0
  •   radulle    5 年前

    既然您使用的是jQuery,那么您可以 const ajaxFunc = callback => $.ajax({...}).done( data => callback) MDN .

    推荐文章