Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.12.2016, 23:35
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

Промисы - вопрос от чайника
Доброго времени суток.
Надо одновременно(плюс/минус) отправить несколько запросов на сервер(промисов) и после их завершения (независимо от успеха) выполнить функцию. Как это правильно сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2016, 17:12
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

TestUser013,
https://developer.mozilla.org/ru/doc...ts/Promise/all
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2016, 22:11
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

destus,
Там написано, что выполнится после всех обещаний или первого reject(). А если надо чтобы после всех успешных и неуспешных?
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2016, 07:20
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

TestUser013,
https://learn.javascript.ru/promise#перехват-ошибок
var a = () => Promise.resolve(1);
var b = () => Promise.reject(new Error(2));
var c = () => Promise.resolve(3);

Promise.all([a(), b(), c()].map(p => p.catch(e => e)))
  .then(results => alert(results)) // 1,Error: 2,3
  .catch(e => console.log(e));
Ответить с цитированием
  #5 (permalink)  
Старый 13.12.2016, 00:08
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

Спасибо. Вопрос закрыт
Ответить с цитированием
  #6 (permalink)  
Старый 13.01.2017, 13:20
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

Скажите, а вот такой вариант будет корректным?

var a = () => Promise.resolve(1);
var b = () => Promise.reject(new Error(2));
var c = () => Promise.resolve(3);

let promiseList = [a(), b(), c()].map((promise) => {
    return promise;
});

Promise.all(promiseList).finally(result) => {
    console.log(result);
});
Ответить с цитированием
  #7 (permalink)  
Старый 16.01.2017, 09:47
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,004

у промиса нет метода finally
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню с выезжающим сайдбаром Jaz Элементы интерфейса 17 26.06.2016 19:21
js из другого файла вопрос чайника me4ta Общие вопросы Javascript 8 02.01.2015 21:24
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по $.ajax для чайника, чтобы понять суть. usg AJAX и COMET 2 10.09.2012 12:47
Вопрос чайника FINoM ExtJS 4 08.08.2011 07:28