Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2018, 13:52
Профессор
Отправить личное сообщение для денис77447327 Посмотреть профиль Найти все сообщения от денис77447327
 
Регистрация: 03.09.2017
Сообщений: 172

синхронно выполнить код
var q = document.getElementsByClassName('message__content');
var inputmessage = document.getElementsByClassName('messenger-tools__input');
var sendmessage = document.getElementsByClassName('messenger-tools__btn js-send-message');
var selectuser = document.getElementsByClassName('b-link im_user');

        if (((q[q.length - 1].parentNode.className).indexOf('message--in') > -1) && q.length < 10) {
            for (var i = 0; i < q.length; i++) {
                if (q[i].innerText={{данные из внешнего ресурса}}) {
                    inputmessage[0].innerText = {{данные из внешнего ресурса}}
                }
				
                
            }
        }
    
    sendmessage[0].click();

использую платформу в которую можно внедрять жабаскрипт
проблема в том что цикл фор выполняется быстро и нужные {{данные из внешнего ресурса}} не успевают подтянутся. нужно выполнить сихнронно
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2018, 14:09
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Ну так подождите пока данные подгрузятся и после выполняйте скрипт.

В строке 8, вероятно, ошибка: производится присвоение значения переменной, не проверка.
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2018, 14:17
Профессор
Отправить личное сообщение для денис77447327 Посмотреть профиль Найти все сообщения от денис77447327
 
Регистрация: 03.09.2017
Сообщений: 172

если тут promise то как его вставить?
Ответить с цитированием
  #4 (permalink)  
Старый 26.07.2018, 14:18
Профессор
Отправить личное сообщение для денис77447327 Посмотреть профиль Найти все сообщения от денис77447327
 
Регистрация: 03.09.2017
Сообщений: 172

[quote=Nexus;491070]Ну так подождите пока данные подгрузятся и после выполняйте скрипт.
если тут promise то как его вставить?
Ответить с цитированием
  #5 (permalink)  
Старый 26.07.2018, 14:23
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

денис77447327, смотря как подгружаются внешние данные.
Ответить с цитированием
  #6 (permalink)  
Старый 26.07.2018, 14:44
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

<script>
  asyncLoop = async () => {
    for (var i = 0; i < 10; i++) {
      var formData = new FormData()
      formData.append('id', i)
      var r = await fetch('./data.php', { method: 'post', body: formData })
      var t = await r.text() ;//.json()
      console.log(t)
    }
  }
  asyncLoop()
</script>


Можно и Promise.all()

<script>
    asyncPromiseAll = async () => {
      requests = []
      for (var i = 0; i < 3; i++) {
        var formData = new FormData()
        formData.append('id', i)
        requests.push(fetch('./data.php', { method: 'post', body: formData }).then(r => r.text()))
      }
      let obj = await Promise.all(requests)
      console.log(obj)
    }

    asyncPromiseAll()
  </script>


а вообще это неправильно

можно также в цикле вызывать fetch('url').then(r => r.json).then(r => {
//и здесь апдейтить
...
inputmessage[0].innerText = r
})
Ответить с цитированием
  #7 (permalink)  
Старый 26.07.2018, 14:55
Профессор
Отправить личное сообщение для денис77447327 Посмотреть профиль Найти все сообщения от денис77447327
 
Регистрация: 03.09.2017
Сообщений: 172

классный ответ но я ничего не понял
Ответить с цитированием
  #8 (permalink)  
Старый 26.07.2018, 14:56
Профессор
Отправить личное сообщение для денис77447327 Посмотреть профиль Найти все сообщения от денис77447327
 
Регистрация: 03.09.2017
Сообщений: 172

Сообщение от Nexus Посмотреть сообщение
денис77447327, смотря как подгружаются внешние данные.
берутся из специального поля ресурска который написан на c++ но си плюс не так быстр как жаба скрипт видимо)
Ответить с цитированием
  #9 (permalink)  
Старый 26.07.2018, 15:39
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

денис77447327, к js эти данные как попадают?
Асинхронным запросом самим js или подключением скрипта через тег script?
Ответить с цитированием
  #10 (permalink)  
Старый 26.07.2018, 16:12
Профессор
Отправить личное сообщение для денис77447327 Посмотреть профиль Найти все сообщения от денис77447327
 
Регистрация: 03.09.2017
Сообщений: 172

все как в коде выше. платформа куда встраивается этот код понимает что хочет от нее js и дает ему это
без всяких тэгов и запросов. вставляется в спец.поле

Последний раз редактировалось денис77447327, 26.07.2018 в 16:19.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
PopUp как выполнить код один раз для сессии kznsky Events/DOM/Window 5 03.03.2015 13:48
Как подгрузить код JS динамически? zhurchik Общие вопросы Javascript 22 02.02.2015 14:16
код нe работает в фаирфохе dadli Javascript под браузер 2 28.01.2012 21:18
Выполнить код после загрузки изображения EugenyK Events/DOM/Window 2 15.07.2008 10:09