![](/img/trans.png)
[英]SharePoint 2013 HTML5 Javascript Upload to Document library with CSOM/JavaScript
[英]$.Deferred() and SharePoint 2013 JavaScript CSOM
我想將jQuery $ .Deferred / promise功能與SharePoint JavaScript API一起使用。 這是我想要實現的一個例子。
function getCachedSearches() {
var dfd = $.Deferred(function () {
var list = context
.get_web()
.get_lists()
.getByTitle('CachedSearches');
cached_searches = list.getItems('');
context.load(cached_searches);
context.executeQueryAsync(
function () {
dfd.resolve();
},
function (sender, args) {
dfd.reject(args.get_message());
}
);
});
return dfd.promise();
}
function addCachedSearch(phrase) {
var dfd = $.Deferred(function () {
var list = context
.get_web()
.get_lists()
.getByTitle('CachedSearches');
var create_item = new SP.ListItemCreationInformation();
var list_item = list.addItem(create_item);
list_item.set_item('Title', phrase);
list_item.update();
context.load(list_item);
context.executeQueryAsync(
function () {
dfd.resolve();
},
function (sender, args) {
dfd.reject(args.get_message());
}
);
});
return dfd.promise();
}
function doSearch() {
addCachedSearch($('#phrase').val())
.then(getCachedSearches());
}
不幸的是,上面的代碼沒有按預期工作 - 第二個調用不等待在執行之前解析第一個promise。 非常感謝
我想我發現了一個問題: .then()
需要一個函數引用,但是你正在調用該函數並傳入結果(在本例中是一個Promise)。 試試這個:
function doSearch() {
addCachedSearch($('#phrase').val())
.then(getCachedSearches);
}
請注意, getCachedSearches
不再具有()
parens。
只是為了踢,這里有一個jsFiddle,它提供了一個你想要做的事情的簡單例子: http : //jsfiddle.net/UbBz3/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.