首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在回调中进行回调

在回调中进行回调
EN

Stack Overflow用户
提问于 2017-02-20 23:34:49
回答 1查看 2.7K关注 0票数 0

我有一个异步操作的问题。我需要知道我的表是何时生成的。但是该表是由通过ajax从数据库获取的信息生成的。

这将是我的起点,我需要知道数据已被获取并生成表:

代码语言:javascript
复制
generateTable(function(r){

});

在这里,我从DB获取信息并将它们发送到回调函数

代码语言:javascript
复制
function getRepairBook(callback) {
            $.ajax({
                method: "GET",
                dataType: "json",
                contentType: "application/json",
                url: "x",
                success: function(response){
                    callback(response);
                },
                error: function(response){

                }
            });
        }

这里我需要回调函数的回调函数。但我不知道该怎么做:

代码语言:javascript
复制
function generateTable(callback) {

//callback of AJAX
   getRepairBook(function (response) {  //, callback

     console.log(response);
     $('#repTable >tbody').html("");

     var trHTML = '';
     $.each(response, function (i, item) {

       //...
       //build table
     });
     $('#repTable >tbody').append(trHTML);
     //need a callback of this callback function
     //callback();
   });

   callback();
}
EN

回答 1

Stack Overflow用户

发布于 2017-02-20 23:49:19

您可以链接JQuery deferred对象。它们是这样工作的:

代码语言:javascript
复制
function foo() {
  // initialize the deferred
  var dfd = $.Deferred();
  
  // resolve the deferred after 2 sec
  setTimeout(function() {
    dfd.resolve();
  }, 2000);
  
  // return the promise
  return dfd.promise();
}

function bar() {
  var dfd = $.Deferred();  
  // resolve the deferred after 1 sec
  setTimeout(function() {
    dfd.resolve();
  }, 1000);
  return dfd.promise();
}

$(function() {      
  var dfd = foo();
  // when foo has been resolved
  dfd.then(function() {
    alert('foo has been resolved');
    var dfd2 = bar();
    // when bar has been resolved
    dfd2.then(function() {
      alert('bar has been resolved');
    });
  });
  
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

$.ajax调用返回一个promise,因此您可以将此promise的解析与您想要执行的下一个操作/函数链接起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42348546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档