Полезности под рукой: Ожидание executeQueryAsync в CSOM
Немного подручных конструкций и возможно полезностей для SharePoint. Со временем начинаешь писать все больше, проекты становятся больше, а вот весь стафф, хорошие конструкции и паттерны держать в голове невозможно.
Небольшой кусочек, для того чтобы добавить этот пост в закладки.
Так как /_api в SharePoint развивается и сам MS говорит, чтобы мы использовали больше конструкции ajax, но иногда не все можно сделать через _api и приходится использовать CSOM.
Многие из вас использую загрузку SP.ClientContext => Web=> List => Item к примеру, и потом загружают контексты через executeQueryAsync.
И если у меня уже есть JQuery и мне нужно что-то извлекать при помощи CSOM, то я использую вот такую конструкцию. Для примера.
Очень удобно в таких конструкциях:
Небольшой кусочек, для того чтобы добавить этот пост в закладки.
Так как /_api в SharePoint развивается и сам MS говорит, чтобы мы использовали больше конструкции ajax, но иногда не все можно сделать через _api и приходится использовать CSOM.
Многие из вас использую загрузку SP.ClientContext => Web=> List => Item к примеру, и потом загружают контексты через executeQueryAsync.
И если у меня уже есть JQuery и мне нужно что-то извлекать при помощи CSOM, то я использую вот такую конструкцию. Для примера.
function getWhatever(url, listId, itemId) { var d = $.Deferred(); var context = new SP.ClientContext(url); var web = context.get_web(); var list = web.get_lists().getById(listId); var item = list.getItemById(itemId); context.load(web); context.load(list); context.load(item); var o = { d: d, item: item, web: web, list: list }; context.executeQueryAsync(Function.createDelegate(o, this.successCallback), Function.createDelegate(o, this.failCallback)); return d.promise(); } successCallback = function () { this.d.resolve(this); } failCallback = function (sender, args) { this.d.reject(sender, args); } function Test() { var getMyWhatever = getWhatever({ ваш url}, { ваш listId}, { ваш itemId}); getMyWhatever.then(function (data) { console.log(data); });И в консоле вернется вами запрошенный объект с контекстами элементов.
Очень удобно в таких конструкциях:
function getItemFromExternalWeb(url, listId, itemId) { var d = $.Deferred(); var context = new SP.ClientContext(url); var web = context.get_web(); var list = web.get_lists().getById(listId); var item = list.getItemById(itemId); var o = { d: d, item: item }; context.load(item); context.executeQueryAsync(Function.createDelegate(o, successCallback), Function.createDelegate(o, failCallback)); return d.promise(); }
Комментарии
Отправить комментарий