Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!
  • Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

Библиотеки за Промиси(асинхрони пресметки) што сте ги користеле?

JensenInterceptor

Gaining Experience
28 ноември 2015
577
230
Скопје
tunephp.blogspot.com
JensenInterceptor's setup  
Processor & Cooler
i5-7500 Kabylake
Motherboard
Asus Prime b250m plus
Storage
1TB HDD Western Digital
PSU
Cooler Master 500 Watt
RAM
16 GB, DDR 4, 2133 MHz, Non-ECC, DIMM, CL15
Video card
GeForce GTX 1050 2B
Case
Cooler Master Elite 343
OS
Dual boot: Ubuntu 16.04, Windows 10
Гледам Promises не е поддржано во ниедна врста на ИЕ, освен во MS Edge. Ама сепак е добро да користам некоја библиотека што ќе можам да ја вклучам во index.html и да ми работи и во ИЕ.

Се спомнуваат
Bluebird
Jquery Deferred,
само со гуглање најдов Promisesjs.org

Епа кое сте го користеле и кое го препорачувате?
 

JensenInterceptor

Gaining Experience
28 ноември 2015
577
230
Скопје
tunephp.blogspot.com
JensenInterceptor's setup  
Processor & Cooler
i5-7500 Kabylake
Motherboard
Asus Prime b250m plus
Storage
1TB HDD Western Digital
PSU
Cooler Master 500 Watt
RAM
16 GB, DDR 4, 2133 MHz, Non-ECC, DIMM, CL15
Video card
GeForce GTX 1050 2B
Case
Cooler Master Elite 343
OS
Dual boot: Ubuntu 16.04, Windows 10
Само ќе надополнам. Се одлучив за jQuery Deferred
Нешто вака од прилика изгледа:

Код:
var jqDeferredApp = (function (jq) {'use strict';
    var deferred = null,
        filtered = null,
        c = 1000000000;

    return {
        init: function () {
            console.log("Init!");
            jq("#myp").text("Calculating sum of first: " + c + " natural numbers");

            deferred = jq.Deferred(function (d) {
                console.log("Constructing Deffered object");
            });

            console.dir(deferred);

            filtered = deferred.then(this.sum);
            console.dir(filtered);

            deferred.resolve(c);

            filtered.done(function( value ) {
                jq("#result").text("Sum of first " + c + " natural numbers is: " + value);
            });
        },

        sum: function (c) {
            var i = 0,
                sum = 0;

            for (i = 1; i <= c; i += 1) {
                sum += i;
            }

            return sum;
        }
    };

}($));

window.document.addEventListener("DOMContentLoaded", function(event) {
    'use strict';
    var jqDeferredApp = window.jqDeferredApp,
        config = {
        "event" : event
    };

    jqDeferredApp.init(config);
});

HTML:
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>JQ Deferred</title>
        <meta charset="UTF-8" />
        <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
        Remove this if you use the .htaccess -->
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="description" content="">
        <meta name="author" content="vlado">
        <meta name="viewport" content="width=device-width, height=device-height, maximum-scale=1, initial-scale=1, user-scalable=no">

        <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
        <link rel="shortcut icon" href="assets/images/favicon.ico">
        <link rel="apple-touch-icon" href="assets/images/apple-touch-icon.png">
        <link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png">
        <link rel="stylesheet" href="css/style.css">
        <!--[if lt IE 9]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->

        <style>
        body
            {
                margin: 0;
                padding: 0;
            }
        </style>
    </head>
    <body>
        <p id="myp"></p>
        <p id="result"></p>
        <script src="js/jquery.min.js"></script>
        <script src="js/app.js"></script>
    </body>
</html>
 

JensenInterceptor

Gaining Experience
28 ноември 2015
577
230
Скопје
tunephp.blogspot.com
JensenInterceptor's setup  
Processor & Cooler
i5-7500 Kabylake
Motherboard
Asus Prime b250m plus
Storage
1TB HDD Western Digital
PSU
Cooler Master 500 Watt
RAM
16 GB, DDR 4, 2133 MHz, Non-ECC, DIMM, CL15
Video card
GeForce GTX 1050 2B
Case
Cooler Master Elite 343
OS
Dual boot: Ubuntu 16.04, Windows 10
И да допрашам, дали некој користел JQuery Deferred?

Што се прави ако во filtered праќам функција која пристапува до други функции, пристапени со „this“ зборчето?

Дека имам голема функција која треба да се изврши асинхроно, односно, прикажи текст дека пресметува, и кога ќе пресмета тогаш да го смени текстот со пресметаната вредност.
Ама оваа функција ми пристапува до други помошни функции од други модули.

Код:
var myModule = (function (ge, jq) {'use strict';
     var deferred = null,
           filtered = null;

     return {
            init: function () {
                 deferred = jq.Deferred();
                 filtered = deferred.then(this.func);

                  deferred.resolve(c);

                  filtered.done(function( value ) {
                     jq("#result").text(value);
                  });
            },

            func: function () {
                 ge.genExpression();
            }
     };
}(window.GenerateExpression, $));

window.document.addEventListener("DOMContentLoaded", function(event) {
    'use strict';
    var myModule = window.myModule,
        config = {
        "event" : event
    };

    myModule.init(config);
});

Код:
var GenerateExpression = (function () {'use strict';
      return {
             genExpression: function () {
                   this.helperFunc();
             },

             helperFunc: function () {
                  // do some stuff
             }
      };
}());
Знам дека би можел непосредно да повикам GenerateExpression.helperFunc() во genExpression() само дали постои нешто во jQuery Deferred за вакви случаеви?

Пошто доста код треба да преуредам.
 
Последна промена:

JensenInterceptor

Gaining Experience
28 ноември 2015
577
230
Скопје
tunephp.blogspot.com
JensenInterceptor's setup  
Processor & Cooler
i5-7500 Kabylake
Motherboard
Asus Prime b250m plus
Storage
1TB HDD Western Digital
PSU
Cooler Master 500 Watt
RAM
16 GB, DDR 4, 2133 MHz, Non-ECC, DIMM, CL15
Video card
GeForce GTX 1050 2B
Case
Cooler Master Elite 343
OS
Dual boot: Ubuntu 16.04, Windows 10
Најверојатно е ова: deferred.resolveWith() | jQuery API Documentation
Праќаш контекст објект што ти е уствари this, и плус низа од параметри што треба да ги прими функцијата.

Значи погоре deferred би било:
Код:
deferred.resolveWith(ge, [c]);
 

JensenInterceptor

Gaining Experience
28 ноември 2015
577
230
Скопје
tunephp.blogspot.com
JensenInterceptor's setup  
Processor & Cooler
i5-7500 Kabylake
Motherboard
Asus Prime b250m plus
Storage
1TB HDD Western Digital
PSU
Cooler Master 500 Watt
RAM
16 GB, DDR 4, 2133 MHz, Non-ECC, DIMM, CL15
Video card
GeForce GTX 1050 2B
Case
Cooler Master Elite 343
OS
Dual boot: Ubuntu 16.04, Windows 10
Безпотреба заплеткано, јебига, што да очекува чоек од jQuery. Од сите промис библиотеки делува најнеприродно.
Се слагам. Од прво едноставно ми делуваше, дека успеав да направам дури и синџир од функции кои се извршуваат одложено, едно по друго.
Ама еве сеа не знам како да покренам "reject" во даден случај.
Пример, делам броеви и кога ќе се деси делење со нула да покренам "reject" односно да ја изврши fail() функцијата.
Пример, да испечати во полето порака, „делење со нула не е возможно“.

Барав на Нет како ова, и излеа треба нов deferred објект да направиш покрај постоечкиот и да покренеш "reject" состојба на promise.

Rejecting A jQuery Promise In A $.ajax Success Method

Ништо, ај пробам некоја друга, ако не ми упали со jQuery.

Вака од прво користење некако ограничено ми делува.
Пример: done() праќа само исход од извршување на функцијата пратена во then(). Не можам да повикам „this“, не го препознава што е. ;)
На пример this.printResult(); - функција во истиот фајл, не знае што e „this“

Сигурно би успеал после доста мозгање, ама најверојатно ќе изгледа грдо кодот :D

Вежбата за jQuery Deferred се наоѓа тука: practices/jqdeferred at master · bluePlayer/practices · GitHub
 
Последна промена:

JensenInterceptor

Gaining Experience
28 ноември 2015
577
230
Скопје
tunephp.blogspot.com
JensenInterceptor's setup  
Processor & Cooler
i5-7500 Kabylake
Motherboard
Asus Prime b250m plus
Storage
1TB HDD Western Digital
PSU
Cooler Master 500 Watt
RAM
16 GB, DDR 4, 2133 MHz, Non-ECC, DIMM, CL15
Video card
GeForce GTX 1050 2B
Case
Cooler Master Elite 343
OS
Dual boot: Ubuntu 16.04, Windows 10
Само да напоменам, во мојов случај се се извршува на клиент, значи баш, математика, и му треба едно 2, 3 секунди во најлош случај, па затоа ми треба одложено пресметување.

Не ми треба АЈАX во моментов.
 

JensenInterceptor

Gaining Experience
28 ноември 2015
577
230
Скопје
tunephp.blogspot.com
JensenInterceptor's setup  
Processor & Cooler
i5-7500 Kabylake
Motherboard
Asus Prime b250m plus
Storage
1TB HDD Western Digital
PSU
Cooler Master 500 Watt
RAM
16 GB, DDR 4, 2133 MHz, Non-ECC, DIMM, CL15
Video card
GeForce GTX 1050 2B
Case
Cooler Master Elite 343
OS
Dual boot: Ubuntu 16.04, Windows 10

Нови мислења

Последни Теми

Статистика

Теми
47.231
Мислења
976.994
Членови
35.540
Најнов член
Matej213
На врв Дно