Разбор пытанняў з рэальных сумоўяў - JS Network. Адрозненне fetch і XHR (XMLHttpRequest)?
Пытанне:
Чым адрозніваецца fetch
і XHR
(XMLHttpRequest
)?
Кароткі адказ
-
fetch
- працуе на промісах,XHR
- працуе на callbacks -
fetch
- асінхронны,XHR
- сінхронны і асінхронны -
fetch
- нельга адмяніць,XHR
- можна -
fetch
- патокавая праца с данымі,XHR
- увесь адказ кешыруецца ў памяці -
XHR
- можам адсочваць працэсс загрузкі даных на сервер
Падрабязны адказ
-
fetch
- працуе на промісах (пазбаўляемся адcallbacks hell
),XHR
- працуе наcallbacks
-
fetch
- асінхронны,XHR
- сінхронны і асінхронны
// стварэнне сінхроннага і асінхроннага запыту з дапамогай XMLHttpRequest // ствараем новы аб'ект XHR var xhr = new XMLHttpRequest(); // дадаем канфігурацыю запыту xhr.open(method, URL, [async, user, password]) // async можа быць false - запыт ажыццяўляецца сінхронна, true - запыт асінхронны
fetch
- нельга адмяніць,XHR
- можна
Для адмены XHR
трэба выклікаць метад abort
xhr.abort()
У самім fetch
няма магчымасці адмяніць запыт, але можам выкарыстаць іншы ўбудаваны аб'ект AbortController
.
-
fetch
- струменевая праца с данымі,XHR
- увесь адказ кешыруецца ў памяці -
XHR
- можам адсочваць працэсс загрузкі даных на сервер (аб'ектxhr.upload
),fetch
- не мае такой магчымасці
Каментары
(Каб даслаць каментар залагуйцеся ў свой уліковы запіс)