Массив не обновляется - PullRequest
0 голосов
/ 26 ноября 2018

Я занимаюсь некоторой автоматизацией браузера и начинаю изучать javascript совсем недавно.На данный момент я очень озадачен следующим:

module.exports = {
  main_page(browser) {
    var pos;
    var tmp = []; //A

    browser
      .url(myUrl)
      .waitForElementVisible('body', 1000)
      .assert.elementPresent('#id > ul > li:nth-child(1)')

      for (var i = 1 ; i <= 6; i+=1){
        browser.getText(`#id > ul > li:nth-child(${i})`, function(result){
              pos = result.value.substr(-1) //B
              tmp.push(pos)                 
            })
      }

      tmp.forEach(function(element) { //C
        console.log(element);
      });

      ...

      browser.end();
  },
}

Я пытаюсь вставить pos в мой массив tmp, чтобы я мог использовать это, чтобы сделать что-то позже.

Я не могу понять, почему мой массив в A не обновляется моим кодом в B.Мой forEach на C ничего не регистрирует.Может ли кто-нибудь помочь мне понять, что происходит, или объяснить, как правильно это сделать?

Любые предложения приветствуются, спасибо.

1 Ответ

0 голосов
/ 26 ноября 2018

Ответ на этот StackOverflow post может фактически быть тем, что вы ищете.

browser.getText возвращает обещание, поэтому вы должны сделать что-то вроде этого

   browser.getText(`#id > ul > li:nth-child(${i})`).then(function(result){
          pos = result.value.substr(-1) //B
          tmp.push(pos)                 
        })

Обещания в основном используются с асинхронными данными.Проверьте это https://developers.google.com/web/fundamentals/primers/promises, чтобы узнать больше об обещаниях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...