Я использую Request-Promise и cheerio, чтобы очистить некоторые данные веб-сайта, по сути, я пытаюсь достичь следующего:
- Создать пустой массив
- Авторизоваться
- Получите информацию с одной страницы и поместите объекты в массив
- Получите информацию с другой страницы и поместите объекты в массив
- For each now object in the array, I need to:
- Go to the URL stored within that object {link: "some url", items: []}
- перебрать все элементы, найденные в этой ссылке, и передать это в массив элементов в повторяемом объекте как таковой: {link: "some url", items: [{item}, {item}]} strong >.
- Откройте завершенный orderArray, который должен выдать что-то вроде этого:
{link: "some url", items: [{item},{item}]}, {link: "some url", items: [{item},{item}]}, {link: "some url", items: [{item},{item}]}
Шаг 6 - это то, где я сталкиваюсь с проблемами, я не знаю, как это сделать, не вкладывая обещание в цикл for в соответствии с моим кодом ниже, который затем начинает становиться неприятным. Могу ли я указать здесь правильное направление?
Вот мой текущий код:
let orderArray = []; rp.post(login) .then(function(res1){ // Login & Set Cookies cookieJar = res1.headers['set-cookie']; return rp(getOpenOrders); }) .then(function($){ // Get Some Info from getOpenOrders orderArray.push({info}); return rp(getShippedOrders); }) .then(function($){ // Get Some Info from getShippedOrders orderArray.push({info}); return orderArray; }) .then(function($){ // Loop through each object in the orderArray for (i = 0,; i < orderArray.length; i++){ rp(orderArray[I].link) .then(function($){ //Get length of items on page let itemsOnPage = $('tbody tr').length; //Get some more details for each object for (j = 0,; j < items.length; j++) { let moreinfo = {…}; orderArray.items.push(moreinfo); } } } return orderArray; }) .then(function($){ // Log finished Array console.log(orderArray); }) .catch(function(err){ console.log(err); }) };