Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.08.2018, 14:09
Новичок на форуме
Отправить личное сообщение для mebius Посмотреть профиль Найти все сообщения от mebius
 
Регистрация: 31.08.2018
Сообщений: 2

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

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

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


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); // уже не работает

Последний раз редактировалось mebius, 31.08.2018 в 14:42.
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2018, 15:48
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

mebius, потому что промисы работают асинхронно.
Ответить с цитированием
  #3 (permalink)  
Старый 31.08.2018, 15:53
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

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

или понять как работает callback )
Ответить с цитированием
  #4 (permalink)  
Старый 31.08.2018, 16:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

mebius, вот так примерно выглядит распараллеливание.
s.jpg
Надеюсь так нагляднее станет понятна твоя проблема.)

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

Последний раз редактировалось Aetae, 31.08.2018 в 16:46.
Ответить с цитированием
  #5 (permalink)  
Старый 31.08.2018, 21:03
Новичок на форуме
Отправить личное сообщение для mebius Посмотреть профиль Найти все сообщения от mebius
 
Регистрация: 31.08.2018
Сообщений: 2

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

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить в аргумент функции текущее значение переменной? polinin Общие вопросы Javascript 7 01.11.2017 10:37
Как получить значение инпута vano_mig Events/DOM/Window 6 22.09.2017 00:57
Как получить значение атрибута тега iframe? Dimaz Общие вопросы Javascript 5 15.12.2012 15:40
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
как передовать и парсить значение переменной по URL? FATALITY Общие вопросы Javascript 10 25.03.2010 19:32