ErichAltheim
@ErichAltheim
Программист

Как понять Promise?

Доброго времени, помогите разобраться с Promise? Изучаю по материалу Ильи Контора - https://learn.javascript.ru/promise и не могу понять, вначале создается экземпляр промиса, где таймер стоит, там есть два действие при положительном и отрицательном. Далее идет привзчик функции - зачем, если я могу обработать в экземпляре промиса, или я что - то не так понимаю?
  • Вопрос задан
  • 1375 просмотров
Решения вопроса 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Что есть "привязчик функции"?
Вы на resolve и reject должны указать именно функции. Так как таким образом в аргументах у них будут необходимые данные. А таймер - хороший вариант "сфабриковать" асинхронное действие.

Материал выбран хороший, прочитайте, поиграйтесь с примерами, потом посмотрите эту статью с хабра.

Промисы нужно пощупать на практике, причем обязательно попробовать обработать ошибки:
а) когда нет интернета
б) когда ваше api ответило не "200"

Затем попробуйте выполнить цепочки промисов (последовательно, параллельно).
Смотрите в дебаггере по шагам, что за чем идет.

Таким образом рано или поздно точно получится разобраться) Я сам, почитал Кантора уже после того, как "потыкался" с промис-библиотеками. Поэтому не могу точно вспомнить, откуда начал, но его статья хорошая на мой взгляд.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sergeystepanov1988
Вот более жизненный пример, может так будет понятнее:

function fetch(url) {
  return new Promise(function(resolve, reject) {
    $.getJSON(url, function(response) {
      if(response){
        resolve(response); 
      } else {
        reject(new Error('No response'));
      }
    });
  });
}

fetch('http://jsonplaceholder.typicode.com/users').then(function(users){
  var output = '';
  users.forEach(function(user) {
    output += '<p>' + user.name + '</p>';
  });
  $('body').html(output);
}).catch(function(err) {
  console.trace(err.message);
});
JSBIN
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы