2
我在用jQuery Promises遇到的一個小問題上摸不着頭腦。基本上我試圖鏈接幾個方法調用(在一個插件中保存),以便它們按順序調用。爲什麼我的jQuery Promise在調用JSOM executeQueryAsync時被忽略?
但是,因爲其中一個函數有一個SP context.executeQueryAsync調用,所以當我嘗試這樣做時,他們似乎用最後一個方法調用,而不是等待承諾的已解決狀態,然後再繼續。
我已經複製類似於我使用超時做,在下面的jsfiddle東西:
下面是使用executeQueryAsync調用該方法的基本版本:
GetList: function (listTitle, fields, camlXml) {
var dfd = new $.Deferred();
$this = $(this);
var data = $this.data('SPLists');
if (!data) {
var list = web.get_lists().getByTitle(listTitle);
var query = new SP.CamlQuery(camlXml);
var items = list.getItems(query);
context.load(items, 'Include (' + fields + ')');
context.executeQueryAsync(function() {
dfd.resolve();
},
function (sender, args) {
dfd.reject();
});
}
return dfd.promise();
}
我以與jsfiddle示例中相同的方式調用我的函數。任何幫助將非常感激!
您好,感謝您的快速答覆! 這適用於超時JsFiddle示例,但不適用於jQuery之外的異步調用(SharePoint 2013 executeQueryAsync)。有任何想法嗎? – 2013-04-24 11:14:30