• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

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

  • Ја почнал/а темата
  • #1

JensenInterceptor

Gaining Experience
28 ноември 2015
577
217
Скопје
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

Епа кое сте го користеле и кое го препорачувате?
 
  • Ја почнал/а темата
  • #4

JensenInterceptor

Gaining Experience
28 ноември 2015
577
217
Скопје
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>
 
  • Ја почнал/а темата
  • #5

JensenInterceptor

Gaining Experience
28 ноември 2015
577
217
Скопје
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 за вакви случаеви?

Пошто доста код треба да преуредам.
 
Последна промена:
  • Ја почнал/а темата
  • #6

JensenInterceptor

Gaining Experience
28 ноември 2015
577
217
Скопје
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]);
 

spiritBreaker

LaravelMaster
27 октомври 2015
2,993
3,363
Зменоо
spiritBreaker's setup  
Processor & Cooler
Intel Core i7 9700K + Cooler Master M240L
Motherboard
Asus ROG STRIX Z390-E Gaming
Storage
Samsung 960 EVO 250GB + Toshiba HDD 2TB + 500 GB Hitachi
PSU
Gigabyte G750H
RAM
2 x 8GB DDR4 Kingston @ 3600MHz
Video card
Gigabyte GTX 1080 Ti G1 Gaming
Case
Asus GT501 TUF
Mouse
Corsair M65 Pro
Keyboard
Cooler Master CK550
Audio
Onboard audio
Monitor
AOC LED 27" I2781FH
OS
Windows 10
_defer . побарај го плагинот, чуда праи :)
 
  • Ја почнал/а темата
  • #9

JensenInterceptor

Gaining Experience
28 ноември 2015
577
217
Скопје
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
 
Последна промена:
  • Ја почнал/а темата
  • #10

JensenInterceptor

Gaining Experience
28 ноември 2015
577
217
Скопје
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 во моментов.
 
  • Ја почнал/а темата
  • #11

JensenInterceptor

Gaining Experience
28 ноември 2015
577
217
Скопје
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

spiritBreaker

LaravelMaster
27 октомври 2015
2,993
3,363
Зменоо
spiritBreaker's setup  
Processor & Cooler
Intel Core i7 9700K + Cooler Master M240L
Motherboard
Asus ROG STRIX Z390-E Gaming
Storage
Samsung 960 EVO 250GB + Toshiba HDD 2TB + 500 GB Hitachi
PSU
Gigabyte G750H
RAM
2 x 8GB DDR4 Kingston @ 3600MHz
Video card
Gigabyte GTX 1080 Ti G1 Gaming
Case
Asus GT501 TUF
Mouse
Corsair M65 Pro
Keyboard
Cooler Master CK550
Audio
Onboard audio
Monitor
AOC LED 27" I2781FH
OS
Windows 10
јеп.
 

Нови мислења

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

Статистика

Теми
42,552
Мислења
820,379
Членови
28,214
Најнов член
vanadi
На врв Дно