Показать сообщение отдельно
  #3 (permalink)  
Старый 28.11.2014, 17:43
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

промисы особенно мощно рулят, когда надо сделать несколько запросов, причем в каждом использовать результаты предыдущего.

традиционный подход с калбэками "вырастает вправо"
myFunc(..., function(data) {
    ...
    myFunc2(data, function(data1) {
        ...
        myFunc3(data1, function(data2) {
            ...
        
        });
    });
});


вариант с промисами остается линейным:
myFunc(...)
  .then(function(data) {
    ...
    return myFunc2(data);
  })
  .then(function(data) {
    ...
    return myFunc3(data);
  })
  .then(function(data) {
    ...
    return myFunc4(data);
  });

здесь каждая из функций возвращает промис, и в этом случае очередной .then ждет выполнения уже этого нового промиса.


ну и есть функция Promise.all - подождать, когда выполнятся все промисы в массиве.

плюс есть обработка ошибок и исключений (второй параметр в then или первый - в методе catch).

из этих элементов можно комбинировать произвольные конструкции, которые на калбэках смотрелись бы убийственно.
Ответить с цитированием