0

ajax 経由でデータを取得する js で 2 つの関数を呼び出します。

getNumContentTotal(ctx);
getContentAll(ctx);

getNumContentTotal(ctx) は、getContentAll(ctx) で必要な変数を設定します。

私のvarが設定されるまで2番目の関数を実行しない方法はありますか?

4

2 に答える 2

2

getNumContentTotal()jQuery を使用している場合 (そうであると想定しています)、ajax 呼び出しがメソッドとメソッドで返すオブジェクトを返しますgetContentAll()。jQuery は promise のようなオブジェクトを返し、シリアル化された方法でコールバックを管理できるようにします。

編集: jQuery の約束に関するより良い記事: Understanding JQuery.Deferred and 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 に答える