Co to jest NODE.JS? Nowoczesne środowisko programistyczne



Podobne dokumenty
Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Dokumentacja końcowa projektu z ZPR

Twisted. Silnik Twojego Internetu. Jan Urbański Ducksboard. PyWaw #25, Warszawa, 10 czerwca 2013

Zadanie programistyczne nr 3 z Sieci komputerowych

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Paweł Rajba,

Wybrane działy Informatyki Stosowanej

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Linux

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

Współpraca z platformą Emp@tia. dokumentacja techniczna

Podstawy technologii WWW

IBM SPSS Statistics - Essentials for Python: Instrukcje instalacji dla Windows

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

FLEX ( ) Przygotowanie środowiska developerskiego Hello world w MXML Hello world w ActionScript

Automatyczna instalacja oprogramowania.

WebNotarius. Specyfikacja techniczna komunikacji z usługą WebNotarius. wersja 1.1

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wprowadzenie do biblioteki klas C++

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

KONFIGURACJA USŁUGI ZSIMED NA SERWERZE ZDALNYM

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Katalog książek cz. 3: Web Service

Patryk Jar Meet.js, Gdańsk 11 marca 2013 r. MODULARNY JAVASCRIPT

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Zaawansowane aplikacje internetowe

Dokumentacja techniczna

NS-2. Krzysztof Rusek. 26 kwietnia 2010

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Podręcznik użytkownika

ActiveXperts SMS Messaging Server

Wykaz zmian w programie WinAdmin Replikator

Podstawy JavaScript ćwiczenia

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

instrukcja INSTALACJI APi_proxy

Wybrane działy Informatyki Stosowanej

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

Usługi sieciowe systemu Linux

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Bardzo szybkie wprowadzenie do Node.js

Kancelaria instalacja programu

Współpraca z platformą dokumentacja techniczna

VinCent v.1.40 zmiany w programie

Sieciowe Technologie Mobilne. Laboratorium 2

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Programowanie urządzeń mobilnych. projekt 6 ( )

Wybrane działy Informatyki Stosowanej

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Rys.2.1. Drzewo modelu DOM [1]

Przewodnik technologii ActivCard

e-awizo SYSTEM POTWIERDZANIA DORĘCZEŃ POCZTY ELEKTRONICZNEJ

Języki skryptowe w programie Plans

Wprowadzenie do projektu QualitySpy

Część 4 życie programu

Aplikacje WWW - laboratorium

UMOWY CYWILNOPRAWNE Instalacja, rejestracja i konfiguracja programu

Opis zmian w wersji Oprogramowania do Obsługi SR/FA/SW/ST/DM

LINUX. Instalacja oprogramowania

HttpRequest Aplikacja Czat

REFERAT PRACY DYPLOMOWEJ

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

System kontroli dostępu ACCO NET Instrukcja instalacji

Programowanie w języku C++ Grażyna Koba

msgbox("akcja: Początek, argument: " + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox("akcja: Koniec"); return DateTime.Now.

Test przykładowy 2 PAI WSB Wrocław /06/2018

Instalacja NOD32 Remote Administrator

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Kompresja stron internetowych

Java jako język programowania

Laboratorium 6.7.2: Śledzenie pakietów ICMP

XML extensible Markup Language. część 5

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

Podstawy języka skryptowego Lua

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem

Platformy Programistyczne Zagadnienia sieciowe i wątki

Utworzenie pliku. Dowiesz się:

Mechanizmy pracy równoległej. Jarosław Kuchta

Programowanie zespołowe

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Przesyłanie Pakietów Danych i TCP/IP

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

Podstawy programowania w języku JavaScript

Należy ściągnąć oprogramowanie Apache na platformę

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

PHP: bazy danych, SQL, AJAX i JSON

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Transkrypt:

Node.js Co to jest NODE.JS? Nowoczesne środowisko programistyczne Środowisko programistyczne w sensie zestawu gotowych klas i metod których można używać do przygotowania własnych skalowalnych i wydajnych aplikacji internetowych.

JavaScript po stronie serwera Dzięki zastosowaniu silnika V8 wprowadzono zupełnie nowe podejście w myśleniu o wykonywaniu kodu JavaScript

JavaScript po stronie serwera Musimy odwrócić sposób myślenia jeśli chodzi wykonywanie JavaScriptu.

Instalacja http://nodejs.org/ Pobieramy pakiet w postaci archiwum tar który instalujemy: node-v0.10.33.tar.gz

Instalacja http://nodejs.org/ Pobieramy pakiet w postaci archiwum tar który instalujemy: node-v0.10.33.tar.gz Alternatywnie mamy dostęp do wersji na różne systemy operacyjne oraz wersje skompilowane w postaci plików wykonywalnych.

Instalacja dla Linux Dla Linuxa pobieramy ten pakiet dostosowany do architektury komputera 32-bitowej lub 64-bitowej

Instalacja dla Linux Program wykonywalny służący do uruchamiania aplikacji napisanych w języku JS Program wykonywalny obsługujący repozytorium modułów systemu środowiska node.js Biblioteka pobranych z repozytorium modułów.

Instalacja dla Linux Przechodzimy do kartoteki bin gdzie wykonujemy polecenie: Program odpowiada numerem wersji Zaleca się zainstalowanie globalnej wersji node.js dostępnej dla wszystkich użytkowników oraz możliwej do uruchomianie a każdego miejsca w strukturze kartotek. Uruchomienie skryptu polega na wywołaniu programu node z parametrem określającym nazwę skryptu (gdy node.js jest zainstalowany lokalnie): >./node serwer.js

Repozytorium NPM Integralną częścią środkowiska NODE.JS, jest bogate repozytorium modułów (bibliotek), dzięki któremu mamy dostęp do wielu gotowych funkcji. http://npmjs.org/

Repozytorium NPM Integralną częścią środkowiska NODE.JS, jest bogate repozytorium modułów (bibliotek), dzięki któremu mamy dostęp do wielu gotowych funkcji. http://npmjs.org/

Repozytorium NPM Integralną częścią środkowiska NODE.JS, jest bogate repozytorium modułów (bibliotek), dzięki któremu mamy dostęp do wielu gotowych funkcji. http://npmjs.org/ Na stronie internetowej projektu można przeglądać i wyszukiwać pakiety, jednak ich instalacja odbywa się w poziomu wiersza poleceń: >./npm install nazwa-pakietu Pakiety instalują się w kartotece lib/node_modules.

Repozytorium NPM Integralną częścią środkowiska NODE.JS, jest bogate repozytorium modułów (bibliotek), dzięki któremu mamy dostęp do wielu gotowych funkcji. http://npmjs.org/ Na stronie internetowej projektu można przeglądać i wyszukiwać pakiety, jednak ich instalacja odbywa się w poziomu wiersza poleceń: >./npm install nazwa-pakietu Pakiety instalują się w kartotece lib/node_modules. Do globalnej instalacji pakietów NPM należy posiadać prawa administratora i wydać polecenie: >./npm -g install nazwa-pakietu

Repozytorium NPM >./npm install -g nazwa-pakietu

Obsługa żądań MODEL ZDARZENIOWY KLIENCI Żądanie HTTP Żądanie HTTP Żądanie HTTP... Żądanie HTTP SERWER Wątek W modelu zdarzeniowym Node.js wykorzystuje tylko jeden wątek do obsługi wielu żadąń, oraz pętlę zdarzeń co powoduje że aplikacja taka jest bardzo wydajna i skalowalna. W praktyce przy żadaniach które nie wymagają złożonych operacji obliczeniowych można obsłużyć nawet do 1 miliona żądań jednocześnie.

Pętla zdarzeń (Event loop) Żądanie HTTP Żądanie HTTP... Żądanie HTTP Rejestracja funkcji zwrotnej (callback) Pętla zdarzeń (Event Loop) Pojedyńczy wątek Request (req) Response (res) Wysłanie odpowiedzi w postaci wcześniej zarejestrowanej funkcji zwrotnej (callback). Zakończenie wykonania żądanej operacji przez serwer Serwer wykonuje np. : - operacje na plikach, - operacje bazodanowe, - obliczenia

Przykład prostego kodu (z strony nodejs.org) var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end('hello World\n'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Prosty serwer przyjmujący żądania http

Przykład prostego kodu (z strony nodejs.org) var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end('hello World\n'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Prosty serwer przyjmujący żądania http Załóżmy że powyższy kod jest zapisany w pliku serwer.js

Przykład prostego kodu (z strony nodejs.org) serwer.js Jeśli node.js został zainstalowany globalnie na komputerze, jego uruchomienie polega na wywołaniu z konsoli polecenia: > node Hello World serwer.js

Przykład prostego kodu (z strony nodejs.org) var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end('hello World\n'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Po uruchomianiu tej aplikacji powstał serwer http oczekujący na żądania na porcie 1337.

Przykład prostego kodu (z strony nodejs.org) var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end('hello World\n'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Po uruchomianiu tej aplikacji powstał serwer http oczekujący na żądania na porcie 1337. Po otrzymaniu żadania http serwer zwraca odpowiedź OK przesyłając do wyświetlenia zwykły tekst: Hello World, który jest widoczny w przeglądarce.

Przykład prostego kodu (z strony nodejs.org) var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/html'); res.end('<html><head></head><body>test</body></html>'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); We wcześniejszym przykłądzie serwer zwracał w odpowiedzi zwykły tekst, natomiast teraz zwraca dokument hipertekstowy ze statyczną stroną internetową.

Przykład prostego kodu (z strony nodejs.org) var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/html'); res.end('<html><head></head><body>test</body></html>'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); We wcześniejszym przykłądzie serwer zwracał w odpowiedzi zwykły tekst, natomiast teraz zwraca dokument hipertekstowy ze statyczną stroną internetową. Stworzyliśmy serwer obsługujący żądania HTTP!!!

Pętla zdarzeń (Event loop) Żądanie HTTP Żądanie HTTP... Żądanie HTTP Rejestracja funkcji zwrotnej (callback) Pętla zdarzeń (Event Loop) Pojedyńczy wątek Request (req) Response (res) Wysłanie odpowiedzi w postaci wcześniej zarejestrowanej funkcji zwrotnej (callback). Zakończenie wykonania żądanej operacji przez serwer Serwer wykonuje np. : - operacje na plikach, - operacje bazodanowe, - obliczenia

Moduły i obiekty var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end('hello world'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); We wcześniejszym przykłądzie serwer zwracał w odpowiedzi zwykły tekst, natomiast teraz zwraca dokument hipertekstowy ze statyczną stroną internetową. Stworzyliśmy serwer obsługujący żądania HTTP!!!

Moduły i obiekty var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end('hello world'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Wróćmy do naszego prostego przykładu który spełniał rolę serwera http...

Moduły i obiekty var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end('hello world'); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Wróćmy do naszego prostego przykładu który spełniał rolę serwera http... W języku JavaScript a tym samym w node.js wszystko jest obiektem i dlatego możemy zawsze obejrzeć podejrzeć każdy obiekt. Można to zrobić korzystając ze specjalnej biblioteki utils, którą można pobrać z repozytorium NPM: > npm -g install utils

Moduły i obiekty Dodajemy moduł za pomocą var http = require('http'); metody require. var utils = require('utils'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end(utils.inspect(req.headers)); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/');

Moduły i obiekty Dodajemy moduł za pomocą var http = require('http'); metody require. var utils = require('utils'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end(utils.inspect(req.headers)); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Korzystamy z metody inspect() z modułu utils która zwraca postać obiektu w formie tekstu, który możemy wypisać.

Moduły i obiekty Dodajemy moduł za pomocą var http = require('http'); metody require. var utils = require('utils'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'); res.end(utils.inspect(req.headers)); ).listen(1337, '127.0.0.1'); console.log('server running at http://127.0.0.1:1337/'); Korzystamy z metody inspect() z modułu utils która zwraca postać obiektu w formie tekstu, który możemy wypisać. Obiekt nagłówka żądania http

Moduły i obiekty var module = require('module_name'); Nazwa obiektu odnoszącego się do modułu Nazwa modułu Dzięki modułom można tworzyć zestawy metod (biblioteki), mogą być wykorzystane wielokrotnie w różnych aplikacjach.

Moduły i obiekty var module = require('module_name'); Nazwa obiektu odnoszącego się do modułu Nazwa modułu Dzięki modułom można tworzyć zestawy metod (biblioteki), mogą być wykorzystane wielokrotnie w różnych aplikacjach. Powstały w ten sposób obiekt jest niejako wskaźnikiem na dany moduł przez który możemy wywoływać z moduły dostępne metody i własności: module.zrobcos();

Moduły i obiekty function Kolo(x,y,r) { function pole() { return Math.pow(r,2)*Math.PI; return { pole: pole ; module.exports = Kolo; var kolo = require('./kolo'); console.log( kolo(3,4,2).pole() );

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie).

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); if( callback ) { callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); if( callback ) { callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); if( callback ) { callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); if( callback ) { callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Rejestracja wywołania zwrotnego Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); if( callback ) { callback(x,y); Wykonanie wywołania zwrotnego i odpowiedź function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Rejestracja wywołania zwrotnego Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y); W ogólności function pomnoz(x,y){ callback jest var iloczyn = x*y; użyteczny kiedy jakaś console.log('iloczyn: '+ iloczyn); akcja musi zostać function dodaj(x,y){ wykonana zanim kod var suma = x+y; wywołania zwrotnego console.log('suma: '+ suma); zostanie wykonany. Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj); Jak zobaczyć asynchroniczność??

Callback Callback [wywołanie zwrotne] - jest to pojęcie które opisuje kod programu przekazany do funkcji w postaci argumentu, czekający na wykonanie w odpowiednim czasie (asynchronicznie). function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Wprowadźmy do naszego kody małe opóźnienie. Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj); Jak zobaczyć asynchroniczność??

Callback function Komunikat(x,y, callback ){ console.log( Czekamy na przed wykonaniem callbacka... ); settimeout( function() { console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y);, 2000); // 2000[ms]= 2[s] function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback function Komunikat(x,y, callback ){ console.log( Czekamy na przed wykonaniem callbacka... ); settimeout( function() { console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y);, 2000); // 2000[ms]= 2[s] function pomnoz(x,y){ var iloczyn = x*y; console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback function Komunikat(x,y, callback ){ console.log( Czekamy na przed wykonaniem callbacka... ); settimeout( function() { console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y);, 2000); // 2000[ms]= 2[s] Funkcje zostały uruchomione function pomnoz(x,y){ zanim wykonane zostały var iloczyn = x*y; wywołania zwrotne console.log('iloczyn: '+ iloczyn); function dodaj(x,y){ var suma = x+y; console.log('suma: '+ suma); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Callback function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' callback && callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; settimeout(function() { console.log('iloczyn: '+ iloczyn);, 3500); function dodaj(x,y){ var suma = x+y; settimeout( function() { console.log('suma: '+ suma);, 1000); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj); + x + ' i y= ' + y); Teraz opóźniamy wykonanie samych funkcji obliczeniowych...

Callback function Komunikat(x,y, callback ){ console.log('wczytalem dwie liczby x= ' + x + ' i y= ' + y); callback && callback(x,y); function pomnoz(x,y){ var iloczyn = x*y; settimeout(function() { console.log('iloczyn: '+ iloczyn);, 3500); function dodaj(x,y){ var suma = x+y; settimeout( function() { console.log('suma: '+ suma);, 1000); Komunikat(4,5,pomnoz); Komunikat(7,5,dodaj);

Prototype - wzbogacanie obiektów var func = function(x,y){ this.x = x; this.y = y; this.pomnoz = function(){ return this.x * this.y;; ; var f = new func(4,7); func.prototype.pokazx = function(){ console.log(this.x); ; func.prototype.pokazy = function(){ console.log(this.y); ; func.prototype.dodaj = function(){ return this.x + this.y; ; func.prototype.pokazdodaj = function(){ console.log(this.dodaj()); func.prototype.pokazpomnoz = function(){ console.log(this.pomnoz()); f.pokazx(); f.pokazy(); f.pokazdodaj(); f.pokazpomnoz();