eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingKolejkowanie w JavaScript › Re: Kolejkowanie w JavaScript
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: porneL <n...@p...net>
    Newsgroups: pl.comp.programming
    Subject: Re: Kolejkowanie w JavaScript
    Date: Sat, 10 Jan 2009 18:28:40 -0000
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 35
    Message-ID: <o...@a...local>
    References: <gkaa45$8op$1@mx1.internetia.pl> <o...@a...local>
    <gkalog$fpv$1@mx1.internetia.pl> <gkamoq$60e$1@nemesis.news.neostrada.pl>
    <gkanca$9f4$1@mx1.internetia.pl>
    NNTP-Posting-Host: cpc4-acto9-0-0-cust565.brnt.cable.ntl.com
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1231612121 10158 86.13.122.54 (10 Jan 2009 18:28:41 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sat, 10 Jan 2009 18:28:41 +0000 (UTC)
    X-User: pornelspam
    User-Agent: Opera Mail/10.00 (MacIntel)
    Xref: news-archive.icm.edu.pl pl.comp.programming:180694
    [ ukryj nagłówki ]

    On Sat, 10 Jan 2009 17:46:31 -0000, Krzysztof Antczak <k...@l...pl> wrote:

    >> funkcja[n]_czeka=true;
    >> settimeout(....)...
    >> ...
    >> funkcja[n]_czeka=false;
    >
    > Mniej więcej tak też próbowałem, chociaż wcześniej nie znałem sposobu
    > przeiterowania po zdefiniowanych funkcjach w silniku JS.

    Nie da się. W JS funkcje są zwykłymi obiektami, które mogą być tworzone w każdej
    chwili i nawet nie muszą być przypisane do żadnego obiektu. Iterowanie po wszystkich
    funkcjach w JS to jak interowanie po wszystkich intach w C.

    np. queue.add(function(){}) // kompletnie anonimowa - nie znajdziesz jej w window ani
    innym obiekcie (nie licząc arguments w wywołaniu add())

    queue.add((function(){ // dostaniesz anonimową funkcję odwołującą się do
    zmiennej lokalnej - nie masz szans na inspekcję f().
    var f = function(){}
    return function(){ f() }
    })())


    var s;
    queue.add(function(){s()}) // nie dowiesz się, że funkcja używa setTimeout
    s = window.setTimeout


    Z drugiej strony, jeśli nie pasi ci asynchroniczność setTimeout, to nie musisz
    zakrzywiać całej czasoprzestrzeni. Możesz zmienić te funkcje:

    window.setTimeout = function( f, timeout ) { f() }

    Powyższa implementacja jest zbyt uproszczona - brak kompatybilności ze starą
    składnią, dodatkowymi parametrami i obsługi clearTimeout(), ale to wszystko jest
    wykonalne. Zobacz jak JSowe frameworki do Unit Testów to robią.

    --
    http://sblam.com
    this.author = new Geek("porneL");

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: