繁体   English   中英

无法遍历我得到的数据。 试过 forEach.., for..of 和 map()

[英]Am not able to iterate through the data that I am getting. Tried forEach.., for..of and map()

无需迭代即可将数据(对象数组)记录到控制台。 我知道我在 for 循环中获取的数据可能在我稍后使用 allOrders 时尚未完成所有获取请求的执行,但我只是无法找到解决方案。 感谢您的帮助。

   
const pageCount = Math.ceil((sortBy === 'deliveryInfo.slotStart' ? countTotalDeliveryDatePageResp : pageResponse) / 20);

// for excel export
let allOrders = [];

let promises = [];

      for(let pageNum = 0; pageNum < pageCount; pageNum++){

        let excelOrderAPI = sortBy === 'deliveryInfo.slotStart' ? "orders/delivery/"+region_id+"/"+endDeliveryDate+"?page="+pageNum+"&size=20" : "/orders/details/?page="+pageNum+"&placedDate.specified=true&placedDate.greaterThanOrEqual="+startDate+"&placedDate.lessThanOrEqual="+endDate+"&size=20&sort="+sortBy+",desc&status.in="+selected.join(',')+"";
        
        promises.push(

          axios.get(excelOrderAPI, {
                    headers: {
                    'Authorization': jwtToken,
                    'Accept' : '*/*',
                    'Content-Type': 'application/json',
                    'App-Token' : 'A14BC'
                      }
            })
            .then(order =>{
  
              if(order.data != null && order.data.length > 0){
                    order.data.map(res=>{
                          allOrders.push(res)
                      })
                
                }
 
           })

        )//end of push()
        

      }


   Promise.all(promises);

试试这个 async/await 风格的代码。 我发现它比 promise 链接更具可读性。

const mainFunction = async () => {
   // for excel export
   let allOrders = [];
   const pageNum = 0;
   while (pageNum < pageCount) {
     let excelOrderAPI =
       sortBy === "deliveryInfo.slotStart"
         ? "orders/delivery/" +
           region_id +
           "/" +
           endDeliveryDate +
           "?page=" +
           pageNum +
           "&size=20"
         : "/orders/details/?page=" +
           pageNum +
           "&placedDate.specified=true&placedDate.greaterThanOrEqual=" +
           startDate +
           "&placedDate.lessThanOrEqual=" +
           endDate +
           "&size=20&sort=" +
           sortBy +
           ",desc&status.in=" +
           selected.join(",") +
           "";
 
     const order = await axios.get(excelOrderAPI, {
       headers: {
         Authorization: jwtToken,
         Accept: "*/*",
         "Content-Type": "application/json",
         "App-Token": "A14BC",
       },
     });
 
     if (order.data != null && order.data.length > 0) {
       order.data.map((res) => {
         allOrders.push(res);
       });
     }
     pageNum++;
   }

    return allOrders;
 };

const allOrdersData = mainFunction(); allOrdersData.then(function(result){ 
                result && result.map(res=>{// do something 
                with the result}); 
             });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM