Галоўная > Разбор пытанняў з рэальных сумоўяў - JS Network. Адрозненне fetch і XHR (XMLHttpRequest)?

Разбор пытанняў з рэальных сумоўяў - JS Network. Адрозненне fetch і XHR (XMLHttpRequest)?

сумоўе js

Пытанне:

Чым адрозніваецца 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 - не мае такой магчымасці

loveJS, 2023-02-11
Каментары

    (Каб даслаць каментар залагуйцеся ў свой уліковы запіс)

    ;