🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153668

Re: jquery callback i pętla

#153668
From: Arivald
Date: Sat, 24 Nov 2012 12:03
57 lines
3061 bytes
W dniu 2012-11-24 10:47, Piotr Rezmer pisze:
> Arivald pisze:
>
>>
>> Może to głupie pytanie, ale to ma być Java czy JavaScript? Bo poprzedni
>> przykład wyglądał na JavaScript, zaś ten wygląda na Javę.
>
> Sorry, nie bardzo trawię swobodę w Javascripcie i dlatego napisałek
> pseudokod w javie :)
>> Com mniej więcej tak:
>>
>> var JsonLoader = {
>>    done: false,
>>
>>    function makeAjaxRequest() {
>>      $.getJSON("/embedded/WaitForChanges", {
>>          extension: "1103",
>>          changedate: lastchange,
>>          tagmode: "any",
>>          format: "json"
>>        },
>>        this.processJSON
>>      );
>>    },
>>
>>    function processJSON(data) {
>>      .....
>>      done = .....
>>      if (!done) SetTimeOut(this.makeAjaxRequest, 1);
>>    }
>>
>>    function start() {
>>      done = false;
>>      SetTimeOut(this.makeAjaxRequest, 1);
>>    },
>
> Jasne. Czyli w processJSON() zwalniamy stos w jQuery. Rozumiem, że
> implementacja SetTimeout() jest bezpieczna i nie prowadzi do wyczerpania
> zasobów?
>

Działa jak każdy timer. Wywołanie SetTimeout nie blokuje stosu, a 
wywołanie callbacka timera (this.makeAjaxRequest) startuje niejako od 
zerowego stosu.

Bardzo możliwe że asynchroniczne wywołanie ajaxowe ($.getJSON) też 
zaczyna zawsze od pustego stosu... ale tu nie jestem pewien.

W Twoim oryginalnym kodzie dodatkowym problemem mogła być anonimowe 
funkcja. W JavaScripcie jest coś takiego jak "closure", tzn przy 
wywołaniu funkcji jej otoczenie, kontekst wywołania może być przenoszony 
aby był dostępny z funkcji. Także jeśli funkcja jest wołana 
asynchronicznie. I teraz przy kolejnych wywołaniach $.getJSON tworzysz 
kolejno anonimową funkcją, kolejny closure który pamięta też poprzednie...

-- 
Arivald
Technical Details
Message-ID: <k8qd2q$tbd$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
References: <50aec14a$0$26694$65785112@news.neostrada.pl> <k8n9f6$h2t$1@news.dialog.net.pl> <50afc7d3$0$1302$65785112@news.neostrada.pl> <k8pqqa$le6$1@news.dialog.net.pl> <50b097d3$0$1226$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Arivald <NOSPAMarivald@interia.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: jquery callback i pętla
Date: Sat, 24 Nov 2012 13:03:22 +0100
Organization: Dialog Net
Lines: 58
Message-ID: <k8qd2q$tbd$1@news.dialog.net.pl>
References: <50aec14a$0$26694$65785112@news.neostrada.pl> <k8n9f6$h2t$1@news.dialog.net.pl> <50afc7d3$0$1302$65785112@news.neostrada.pl> <k8pqqa$le6$1@news.dialog.net.pl> <50b097d3$0$1226$65785112@news.neostrada.pl>
NNTP-Posting-Host: dynamic-78-9-151-235.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1353758618 30061 78.9.151.235 (24 Nov 2012 12:03:38 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Sat, 24 Nov 2012 12:03:38 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0
In-Reply-To: <50b097d3$0$1226$65785112@news.neostrada.pl>
X-Antivirus: avast! (VPS 121124-0, 2012-11-24), Outbound message
X-Antivirus-Status: Clean
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit