Переменные предыдущего промиса.
приветствую уважаемых коллег!
Учусь работать с промисами. Есть примерно такой код: doRequest(param1) .then(data1 =>{ return doRequest(param2); } ) .then(data2 => { result = data1 + data2; }) Во втором блоке then нужны результаты обеих запросов (data1 и data2), однако data1 там не доступна. Как прокинуть во второй блок данные полученные в первом? или как по другому правильно решить эту проблему. |
|
Там приводится решение через Promise.all(...) т.е. оба запроса отправляются параллельно.
А если второй запрос необходимо выполнить после первого (т.к. для второго нужны параметры, возвращаемые первым). Тогда как? |
Конечно, можно ещё через await или калбеками, но мне хотелось узнать есть ли решение именно по классической схеме через promis.
|
<script> function doRequest() { return Promise.resolve('data2') } Promise.resolve('data1') .then(data1 => { return doRequest().then(data2 => [data1, data2]) }) .then(([data1, data2]) => console.log(data1, data2)); </script> |
там есть пример, что результат первого промиса сохраняется в переменной объявленной выше... думаю чисто на промисах, без доп переменных не получится...
или ждем других читателей... |
Цитата:
|
кажется destus классное решение показал, чуть позже проверю как будет работать.
|
пример из первого поста, и в пример destus'a... это разные примеры %)
|
я так понял, что идея в том, что вместо:
return doRequest(param2); из первого примера, надо написать: return doRequest(param2).then(data2 => [data1, data2]); В этом случае во второй then должны вернутся все нужные данные. |
Часовой пояс GMT +3, время: 20:32. |