0

我在我的 js 中调用了两个通过 ajax 获取数据的函数:

getNumContentTotal(ctx);
getContentAll(ctx);

getNumContentTotal(ctx) 设置 getContentAll(ctx) 所需的 var;

有没有办法在设置我的 var 之前不执行第二个函数?

4

2 回答 2

2

如果您使用的是 jQuery(我假设您是),则返回 ajax 调用在您的getNumContentTotal()andgetContentAll()方法中返回的对象。jQuery 返回一个类似对象的承诺,允许您以序列化的方式管理回调:

编辑:关于 jQuery 承诺的更好文章:了解 JQuery.Deferred 和 Promise

function getNumContentTotal(ctx) {
  return $.ajax(...);
}

function getContentAll(ctx) {
  return $.ajax(...);
}

var promise = getNumContentTotal(ctx);
promise.pipe(function(data) {
  // do something with data
  return getContentAll(ctx);
}).done(function(data) {
  // do something with data
});
于 2013-11-12T15:05:07.170 回答
1

像这样的东西怎么样:

function getNumContentTotal(ctx)
{
    $.ajax({
        url: ajaxUrl,
        context: document.body
    }).done(function(data) {
        getContentAll(data);
    });

}

function getContentAll(ctx)
{
   //other function
}

因此,您仅在加载第一个函数时才调用下一个函数。这样,您将提供给下一个函数的变量总是被填充。

于 2013-11-12T15:04:47.770 回答