src/util/sp/addExecuteQuery.js
/**
* Adds an executeQuery function to the SP ClientContext that calls the
* executeQueryAsync function and returns a promise.
*
* @example
* const ctx = window.SP.ClientContext.get_current();
* const item = ctx.get_web().getList(list).getItemById(id);
* addExecuteQuery();
* ctx.executeQuery()
* .then(() => {})
* .catch(() => {});
*/
export default function addExecuteQuery() {
if (window && window.SP && window.SP.ClientContext && !window.SP.ClientContext.executeQuery) {
window.SP.ClientContext.prototype.executeQuery = function() {
const ctx = this;
return new Promise(function(resolve, reject) {
ctx.executeQueryAsync(
function() {resolve(arguments);},
function() {reject(arguments);}
);
});
};
}
}