ネストされた context.executeQueryAsync を Deferred で使用するにはどうすればよいですか? 以下は私のコードです。私が探しているものを正確に説明します。
コード
function getValues() {
var dfd = $.Deferred(function () {
context.executeQueryAsync(function () {
var navigationItem = [];
// First Loop
while (termEnumerator.moveNext()) {
// Push Parent Terms in navigationItem array
navigationItem.push({ "name": ""});
// Get Sub Terms
context.executeQueryAsync(function () {
// Second Loop
while (termsEnum.moveNext()) {
// Push Sub Terms in navigationItem array
navigationItem.push({ "name": ""});
}
}, function (sender, args) {
console.log(args.get_message());
});
}
dfd.resolve(navigationItem);
}, function (sender, args) {
console.log(args.get_message());
dfd.reject(args.get_message());
});
});
return dfd.promise();
}
基本的に、上記のコード構造を使用して、SharePoint Online で分類法 (用語とサブ用語) を取得しようとしています。最初に、名前を付けnavigationItem
てすべての用語を反復処理する配列を作成しました。
反復中に、まず、用語をこの配列にプッシュします。これに加えて、サブ用語があればそれを取得して同じ配列にプッシュします。
2 番目のループの実行が完了するまで、コードがそれ以上実行されないようにしたいのです。そのため、別の関数に返すときに最終的な配列が得られます。