JSFiddle - React, Tailwind, and code Playground

by angstrey

JavaScript

define(["jquery", "helpers/UrlResolver"], function ($, urlResolver) {
    "use strict";

    var baseUrl = urlResolver.resolveUrl("~/api/");

    var serviceHelpers = {
        ajaxRequest: ajaxRequest,
        queueAjaxRequest: queueAjaxRequest,
        formatServiceResponse: formatServiceResponse
    };
    var requestQueue = $({});

    return serviceHelpers;

    function ajaxRequest(type, url, data, dataType) { // Ajax helper     
        var dataToSend = null, options, formDigest;

        if (data) {
            if ("get" === type) {
                dataToSend = data;
            } else if (data.toJson) {
                dataToSend = data.toJson();
            } else {
                dataToSend = JSON.stringify(data);
            }
        }

        options = {
            dataType: dataType || "json",
            contentType: "application/json",
            cache: false,
            type: type,
            data: dataToSend
        };

        formDigest = $("#__REQUESTDIGEST").val();
        if (formDigest) {
            options.headers = {
                'X-RequestDigest': formDigest
            };
        }

        //var antiForgeryToken = $("#antiForgeryToken").val();
        //if (antiForgeryToken) {
        //    options.headers = {
        //        'RequestVerificationToken': antiForgeryToken
        //    }
        //}
        return $.ajax(buildBaseUrlByCurrentHost(url), options);

    }

    function queueAjaxRequest(queueName, type, url, data, dataType, fail) {
        var requestInfo = {
            key: queueName,
            type: type,
            url: url,
            data: data,
            dataType: dataType,
            fail: fail,
            deferred: new $.Deferred()
        };

        queueAjaxRequestInternal(requestInfo);

        setTimeout(function () {
            if (!requestQueue.queue(requestInfo.key).isBusy) {
                requestQueue.dequeue(requestInfo.key);
            }
        }, 100);

        return...