Kaip veikia „JavaScript“ atsakymai į AJAX foną?

Kadangi „JavaScript“ veikia tame pačiame sraute, atlikus AJAX užklausą, kas iš tikrųjų vyksta fone? Norėčiau giliau suprasti šį klausimą, ar kas nors gali apšviesti?

122
27 сент. nustatyti aziz punjani 27 sep . 2011-09-27 23:58 '11, 23:58, 2011-09-27 23:58
@ 2 atsakymai

Žemiau viršutinės ribos javascript turi įvykių eilę. Kiekvieną kartą, kai baigiasi „JavaScript“ vykdymo sriegis, jis patikrina, ar eilėje yra kitas įvykis. Jei taip, ji ištraukia jį iš eilės ir sukelia šį įvykį (pvz., Pelės paspaudimą).

Gimtojo kodo tinklas, kuris yra ajax skambučio metu, žinos, kada bus įvykdytas „ajax“ atsakas, ir įvykis bus įtrauktas į „javascript“ įvykių eilę. Tai, kaip jūsų kodas žino, kai skambina „ajax“, priklauso nuo įgyvendinimo. Jis gali būti įgyvendintas naudojant temas, taip pat jis gali būti orientuotas į įvykį (tai nėra didelis dalykas). Įgyvendinimo esmė yra ta, kad kai vykdomas „ajax“ atsakas, kai kurie gimtoji kodai tai žinos ir įves įvykį į JS eilę.

Jei „Javascript“ šiuo metu neveikia, įvykis bus nedelsiant paleistas, o tai sukels „ajax“ atsakymo tvarkyklę. Jei tuo metu veikia kažkas, įvykis bus apdorojamas, kai baigsis dabartinis „JavaScript“ vykdymo siūlelis. „Javascript“ variklis nereikalauja jokių apklausų. Kai „Javascript“ dalis bus baigta, JS variklis tiesiog patikrina įvykio eilę, kad pamatytų, ar nėra nieko kito. Jei taip, jis išmeta kitą įvykį iš eilės ir ją atlieka (skambindamas vienai ar daugiau šio įvykio registruotų atšaukimo funkcijų). Jei įvykio eilėje nieko nėra, tuomet JS vertėjas turi laisvo laiko (šiukšlių surinkimas arba neveikimas), kol kai kurie išoriniai agentai renginio eilėje kažką pateikia ir vėl atsibunda.

Kadangi visi išoriniai įvykiai praeina per įvykio eilę, o jokie įvykiai niekada neįsijungia, o „javascript“ iš tikrųjų pradeda kažką kito, ji išlieka vienas sriegis.

Štai keletas straipsnių apie išsamią informaciją:

190
28 сент. atsakymas, kurį pateikė jfriend00 Sep 28 2011-09-28 00:04 '11 12:04 am 2011-09-28 00:04

Čia galite rasti labai išsamius „JavaScript“ įvykių tvarkymo dokumentus.
Tai parašė vaikinas, dirbantis „Javascript“ operacijoje „Opera“ naršyklėje.

Tiksliau, pažiūrėkite į antraštes: „Įvykio srautas“, „Įvykio eilutė“ ir „Ne naudotojų įvykiai“: sužinosite, kad:

  • „Javascript“ veikia kiekviename skirtuke arba naršyklės >
  • Įvykiai yra eilėje ir vykdomi nuosekliai.
  • XMLHttpRequest atlieka įgyvendinimas, o atšaukimai vykdomi įvykio eilėje.

Pastaba Pradinė nuoroda buvo: nuoroda , bet dabar ji yra mirusi.

15
05 окт. atsakymas pateikiamas qwertzguy 05 okt. 2011-10-05 17:33 '11, 17:33, 2011-10-05 17:33

Kiti klausimai apie „ žymas „ arba „ Užduoti klausimą“