Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить значение переменной из промиса?(z) (https://javascript.ru/forum/misc/75079-kak-poluchit-znachenie-peremennojj-iz-promisa-z.html)

mebius 31.08.2018 14:09

Как получить значение переменной из промиса?(z)
 
Добрый день!
Пытаюсь разобраться с промисами, и конечно время от времени бывают проблемы.
Пробую на Селениуме +nodeJS.
Прочитал массу примеров, но вот уткнулся в простейшую вещь и не могу сдвинуться с места.

Нужно получать значения с двух разных страниц и сравнивать,
а вот как вытащить значения для этого??
Как получить и использовать 'z' вне промиса?

PS. или вообще не использовать промисы в данном случае:dance:


driver.findElements(By.css("div#box-campaigns.box s.regular-price"))  
.then(result => result.map(z => z.getCssValue(["color"]))) 
.then(res =>Promise.all(res) 
.then(z => console.log(z)) );

     console.log(z); // уже не работает

ruslan_mart 31.08.2018 15:48

mebius, потому что промисы работают асинхронно.

SuperZen 31.08.2018 15:53

у вас в res уже должен быть массив и промис там не нужен, здесь нужен async/await вот как тут https://seleniumhq.github.io/seleniu...pi/javascript/

или понять как работает callback )

Aetae 31.08.2018 16:44

Вложений: 1
mebius, вот так примерно выглядит распараллеливание.:)
Вложение 3989
Надеюсь так нагляднее станет понятна твоя проблема.)

P.S. Асинхронность в js на самом деле лишь эмуляция параллельности, и выполняется в одном потоке, но это отдельная история, на суть в обычной жизни не влияющая.

mebius 31.08.2018 21:03

Цитата:

Сообщение от SuperZen (Сообщение 493729)
у вас в res уже должен быть массив и промис там не нужен, здесь нужен async/await вот как тут https://seleniumhq.github.io/seleniu...pi/javascript/

или понять как работает callback )

Спасибо, сижу разбираюсь теперь с async/await.
Надеюсь получится переписать по-новому.
Хорошо бы конечно увидеть Ваш вариант реализации и главное,
будет ли искомый результат с возвратом значения?


Часовой пояс GMT +3, время: 07:15.