Как использовать then в данной ситуации?

95
18 мая 2021, 07:20

Паршу сайт, есть функция. Как мне вернуть из этой функции значение? Как я понимаю нужно сделать после each then, который будет возвращать resolve, но я получал ошибку TypeError: $(...).each(...).then is not a function, когда пытался так сделать

function parse(body) {
return new Promise(function(resolve, reject) {
 var $ = cheerio.load(body)
 $('span').each(function(i, elem) {
    axios.get(url)
      .then(function(response) {
        // действия с полученным html
      })
      .then(function(mark) {
        // еще действия
      })
  }).then(function(data)
    return resolve(data)
 })
})
}
Answer 1

У вас сейчас какая ситуация: вы проходите по всем элементам, запускаете какой-то сетевой запрос и все.
Во первых, вы ничего никуда не возвращаете, во вторых $.each вернет объект, где нет метода then.

Jquery (cheerio) давно не пользовался, поэтому будет смешанный ответ.

  function parse(body) {
    const $ = cheerio.load(body);
    // В promises массив ожиданий
    const promises = $('span').map((i, elem) => {
      return axios.get(url)
        .then(function(response) {
          // действия с полученным html
        })
        .then(function(mark) {
          // еще действия
          // тут надо что-то будет вернуть
        });
    });
    // Дождется, когда все ожидания выполнятся
    return Promise.all(promises);
  }

Полезные ссылки:

Promise.all

READ ALSO
$ is not defined Angularjs

$ is not defined Angularjs

При оценке $('phone-details') в консоли элемент выводится, $ так же в консоли определен, но при клике на строку таблицы появляется ошибка ReferenceError: $ is not defined

101
Event собитие на slick slider(slick.next,slick.prev)

Event собитие на slick slider(slick.next,slick.prev)

Верстка мобильной версии slick slider

82
метод concat в конструкторах на прототипе Array

метод concat в конструкторах на прототипе Array

Не понимаю поведение метода concat в конструкторах на прототипе Array; это БАГ или что ( ?

107
Проблема с textContent [дубликат]

Проблема с textContent [дубликат]

Почему при клике на button, textContent у $alertApp появляется и тут же исчезает?

283