我对 jQuery Promises 的一个小问题摸不着头脑。基本上我试图链接几个方法调用(在插件中保存),以便按顺序调用它们。
但是,因为其中一个函数有一个 SP context.executeQueryAsync 调用,所以当我尝试这个时,它们似乎被调用了 final 方法,而不是在继续之前等待 promise 的已解决状态。
我在下面的 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 示例相同的方式调用我的函数。任何帮助将非常感激!