gpt4 book ai didi

javascript - $.Deferred() 和 SharePoint 2013 JavaScript CSOM

转载 作者:行者123 更新时间:2023-11-30 10:27:04 25 4
gpt4 key购买 nike

我想将 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 不再有 () 括号。

只是为了好玩,这里有一个 jsFiddle,其中包含您正在尝试做的事情的提炼示例:http://jsfiddle.net/UbBz3/

关于javascript - $.Deferred() 和 SharePoint 2013 JavaScript CSOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com