これはまったく機能しません。基本的には、ステップ実行すると、ブレークポイント(BREAKPOINT1、BREAKPOINT2など)がある順に実行されます。jquery multiple deferred chaining
現時点では、私はSharePoint開発を行う必要があるため、すべてが非同期でなければなりません。 1つの編集リスト項目のデータをロードすると、たぶん10-12回の非同期呼び出しが発生します。だから私はどこでも深いところにいくつかの層があります。これは機能を完全に破壊しているものです。
EDIT-何が起こりたいですか。子を取得し、グループIDをリストから取得し、getgroupnameを呼び出し、すべてのID(50桁まで)のグループ名を取得し、配列の内容を隠しフィールドにダンプするので、リストを更新すると、これらのグループIDのそれぞれについて、新しいリスト項目と同じように新しいレコードを作成してください。だから私は "更新"をクリックすると、IDをつかんで、隠されたフィールドに存在しないグループのための新しいリストアイテムを作成します。これは親子関係です。選択された各グループは新しいリスト項目になりますが、複数のグループではなく1つのグループで1つだけ必要です。
このチェーンを修正してグループ名を非表示フィールドに返す方法を知っておく必要があります。私はそこに着いているだけの問題を抱えていて、誰かが私の論理の故障に気付くことを望んでいる。
function getchildren(id) {
var retval = [];
var url = "call to sharepoint 2013 url";
var ajaxPromise = restfulAPICall(url); //inside of this includes return $.ajax
ajaxPromise.then(function (data) {
$.each(data.d.results, function (i, v) {
var def = new $.Deferred();
getGroupname(v.Assigned_x0020_ToId.results[0]).done(//BREAKPOINT4 - multiple hits
function (val) {
def.resolve(val); //BREAKPOINT5
}
)
.done(function() {
reval.push(def); //BREAKPOINT6 (then back to 5, etc for # of results)
});
});
});
return $.when.apply(undefined, retval).promise(); //BREAKPOINT2
}
function getGroupName(v) {
var d = $.Deferred();
var ctx = new SP.ClientContext.get_current();
var groups = ctx.get_web().get_siteGroups();
var groupname = groups.getById(v);
ctx.load(groupname);
ctx.executeQueryAsync(function() {
d.resolve(groupname.get_title());
},
function (sender, err) {
d.reject(err);
});
return d.promise();
}
//somewhere else
if (!isChild) {
getChildren(id).then(function (val) { //BREAKPOINT1
$('#children').val(val); //BREAKPOINT3 - value blank
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="hidden" id="children" />
実際に何が起こりたいですか?実際の質問が含まれるように質問を編集してください。 – Thernys
もちろん、今やります。 –
ブレークポイント2が問題だと思います。 retvalにはretvalに何かがある前に実行されます。 breakpoint6まではretvalに値を設定しません。私は非常に多くの延期の目的が不明です。私には、breakpoint4が発生するbreakpoint3を移動し、breakpoint4,5,6を削除することができます。何か不足していますか? – tpdietz