javascript - JQuery:在 if-else 之后完成()

标签 javascript jquery ajax

使用ajax调用,我们能够在使用done()函数运行后执行操作

$.ajax({
        .....
      })
 .done ( function(data) {
        ..... (manipulate data using $.ajax result
      })

现在我有一个 if-else 子句,其中包含 ajax-embedded

  if (some condition)
  { //Standard  HTML-element/tag manipulation
       $("#obj1").append('<a class="trigger">Click Me </trigger>');
       $(".SomeClass").remove();
       ......
  }
  else
  { 
     //HTML-element/tag manipulation after $.ajax-call 
     $.ajax({
       //perform ajax-call
     })
     .done(function (data) {
          $("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
      })
  }

  //Perform actions: Part2
  $(".trigger").Click(function() { Somefunction() });

我想知道 Jquery 是否提供了一种方法来使第 2 部分中的函数的执行停止,直到 if-else 中的所有操作完成(包括 >$.ajax)?我似乎无法使用谷歌找到任何与此相关的内容(很可能我只是使用了错误的关键字)。

希望大家都能理解我的问题。如果您需要更多信息,请随时发表评论。

最佳答案

在这种情况下,您可以使用 jQuery Promise。 http://api.jquery.com/deferred.done/

var dfd = null; 

if (some condition)
  { //Standard  HTML-element/tag manipulation
       $("#obj1").append('<a class="trigger">Click Me </trigger>');
       $(".SomeClass").remove();
       ......
      //Create Deferred object and resolve immediately
      dfd = $.Deferred();
      dfd.resolve();
  }
  else
  { 
     //HTML-element/tag manipulation after $.ajax-call 
    //$.ajax returns Deferred 
    dfd = $.ajax({
       //perform ajax-call
     })
     .done(function (data) {
          $("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
      })
  }

  //Use when for waiting the Deferred to get resolved
  $.when(dfd).then(function(){
        //Perform actions: Part2
       $(".trigger").Click(function() { Somefunction() });
  })

关于javascript - JQuery:在 if-else 之后完成(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120451/

相关文章:

javascript - 在javascript中使用正则表达式提取整数数组

javascript - 在运行时更改 css 关键帧属性

javascript - 如何使用在 React 初始状态中声明的空数组?

php - 大表列表后 Internet Explorer 中的文本区域速度变慢

javascript 适用于 jsfiddle 但不适用于我的浏览器

javascript - 使用 JQuery 将行追加到表中

javascript - 为多个标记设置 map 边界

java - 从 spring Controller 转发到 jsp 文件

ajax - 是否可以在 Spring MVC 中使用 @ResponseBody 返回 JSONArray?

javascript - 使用 AJAX 将 Windows-1252 转换为 UTF-8