Home Reference Source Repository

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);}
                );
            });
        };
    }
}