RUVDS.com corporate blog
Ajax
Website development
Comments 20
+1
Где то мир явно свернул не туда, если в Браузере, основой которого является HTPP запросы нам нужна библиотека для работы с ними.
+2
ну это скорее врапперы для более удобной работы с http (aka ajax) запросами в браузере
+5

Так низкоуровневый XMLHttpRequest есть, а в современных есть и высокоуровневый fetch.

+1

Что уж там. Самой большой ошибкой человечества было изобретение колеса. Ведь бегали же нормально, зачем что-то придумывать!

0
дело в том что есть fetch который умеет в промисы но не умеет в отмену запросов и есть xhr который не умеет в промисы зато умеет в отмену запросов. а есть библиотеки которые могут и в промисы и в отмену запросов
0
А зачем вам отмена запросов, если фактически запрос на сервере всё равно выполнится? Как вы это используете?
0
Говорят, что раньше было нельзя, а сейчас уже можно, с помощью AbortController
+1
С AbortController отменять уже можно, а вот за прогрессом следить всё ещё нельзя, насколько я знаю.
0
Если у вас задумано некое server-side исполнение кода (не важно в каком контексте) — то случается небольшая проблемка: fetch в контексте сервера просто нет. И либо велосипед, либо таки взять одну из библиотек, которая умеет и в браузере и в ноде работать единообразно.

Так что вот шаг влево, шаг вправо — и всё быстро становится гораздо менее очевидным и более сложным.
-1

fetch никак не обрабатывает статус-коды и требует специального обращения, чтобы распарсить json.


function readJson () {
   return fetch('/path/to/api')
     .then(response => {
         if (!response.ok) {
           throw new Error("HTTP error " + response.status);
         }
         return response.json();
     })
     .then(json => {
       console.log(json);
     })
     .catch(error => {
       console.error(error)
     })
}

Код взят отсюда: https://stackoverflow.com/a/51859415/1297743


В библиотеках эти штуки уже идут из коробки, в результате код сверху сокращается до одной строчки:


axios.get('/path/to/api').then(data => console.log(data), err => console.error(err)
0
уважаемые минусующие, а что я написал не так? fetch работает как-то иначе?
+3

Простые статьи проще и дешевле переводить, их можно постить в большем количестве, что способствует продвижению своих услуг. Так что не надоест, пока их статьи будут плюсовать.

+4
А приведите пример, когда axios сложно пользоваться. Что-то я за года 3 активного использования сложностей не увидел.
0
Объясните нубу пожалуйста, описанные в статье библиотеки нужны для пересылки данных из браузера на бекенд? У меня есть небольшой опыт реализации приложения на стеке MEAN (ангуляр первый), там я отправлял все данные с фронтенда на бекенд с помощью ангуляра.
Only those users with full accounts are able to leave comments. , please.