JSFiddle - React, Tailwind, and code Playground

HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="scripts/datajs-1.0.3.min.js"></script>
    <script type="text/javascript" src="scripts/knockout-2.1.0.js"></script>
    <script type="text/javascript" src="scripts/knockout.mapping-latest.js"></script>
    <script type="text/javascript" src="scripts/jquery-1.6.4.min.js"></script>
    <script type="text/javascript" src="scripts/String.Format.js"></script>
    <script type="text/javascript" src="pipe.js"></script>
    <script type="text/javascript" src="support.js"></script>
    <script type="text/javascript">

        function dop2model(ardg, ads, values) {
            var result = [];
            var Desc = function (isn) {
                for (var i = 0; i < ads.length; i++)
                    if (ads[i].ISN_AR_DESCRIPT == isn) return ads[i];
                return null;
            };
            
            for (var i = 0; i < ardg.length; i++) {
                var ad = Desc(ardg[i].ISN_AR_DESCRIPT);
                var r = { AD: ad, VALUE: ko.observable(values[ad.API_NAME]) };
                result.push(r);
            };
            return result;
        }

        function model2dop (values) {
            var result = {};
            for (var i = 0; i < values.length; i++) {
                var r = values[i];
                if (r.AD.AR_TYPE == 'text' || r.AD.AR_TYPE == 'decimal')
                    result[r.AD.API_NAME] = r.VALUE();
            }
            return result;
}

//Главное чего не хватет – это сделать таск из функции. 

        function loadData() {
            md = new Task();
            md.name = 'md';
            md.startTime = new Date; 
            //время начало
             
            md.doc = pipe.load( // подставляеться в фун-цию в pipe.js
                {
                    "DOC_RC({0})": urlParamInt("rc_id"),
                    expand: "REF_VISA_List,REF_FILE_List,AR_RC_VALUE_List"// расширить
  ...

JavaScript

function extend(Child, Parent) {
    var F = function () { };
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.superclass = Parent.prototype;
};

function error(e) {

};

var TaskState = { Created: 0, Started: 1, Completed: 3, Failed: -1 };

function Process() {

var  
}



function Task() { // задавать работу
    var self = this;
    this.state = TaskState.Created;// 0
    //this.data2result - преобразовать данные в результат
    var paused = []; // ожидающие нашего результата задачи
    var wanted = []; //кого мы ждем
    //self.wl = wanted; self.psd = paused;
    self.asyncResult = function (data) {
        log(self + ".asyncResult()  " + (new Date() - self.startAt) / 1000 + "s"); //async Result-асинхронный результат время вставляем сюда new Date()
        self.result = (self.data2result !== undefined) ?
        self.data2result(data) : data;
        self.state = TaskState.Completed;
        self.resume();
    };

    var setNamed = function (t) {// установить имена
        for (v in self)
            if (self[v] == t)
                self[v] = t.result;
    }

    this.resume = function (t) {//??
        var s = self + ".resume";
        if (t != undefined) s += "(" + t + ")";
        //s += " wanted " + wanted.length;

        if (t != undefined) {
            setNamed(t);
            wanted.splice(wanted.indexOf(t), 1);
        };
        //s += ":" + wanted.length;
        //log(s);
        if ((wanted.length == 0) && (self.state == TaskState.Created))
            self.start();
        else if ((self.state == TaskState.Completed) && (paused.length != 0)) {
            //log("-" + self + ".fire(" + paused + ")");
            for (var i = 0; i < paused.length; i++)
                paused[i].resume(self);
        }
    };

    this.start = function () {//старт
        log(self + ".start");
        self.state = TaskState.Started;
        self.method(self);
    };

    this.wait = function ()...