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