Axios 异步等待函数返回'undefined'结果(使用 while 循环)



我正在尝试使用axios从api获取数据。

我首先获取令牌,然后使用令牌进行请求。由于可以响应的信息数量是有限制的,所以我必须使用while循环来获取所有数据,并将其全部存储到一个空数组中。

然而,我收到了一堆"未定义",我在网上读到了其他类似的文章,其中大部分都是因为";不返回";,但是由于我使用while循环,我在哪里可以返回数据?

const getDailySales = async (req, res) => {
try {
const res_token = await axios.post(
`https://cysms.wuuxiang.com/api/auth/accesstoken?appid=${process.env.TCSL_APPID}&accessid=${process.env.TCSL_ACCESSID}&response_type=token`
);
const token = res_token.data.access_token;
var list = [];
var pageTotal = true;
var pageNo = 1;
while (pageTotal) {
var salesData = await axios.post(
`https://cysms.wuuxiang.com/api/datatransfer/getserialdata?centerId=${process.env.TCSL_CENTERID}&settleDate=2022-09-30&pageNo=${pageNo}&pageSize=20&shopId=12345`
{},
{
headers: {
access_token: `${token}`,
accessid: `${process.env.TCSL_ACCESSID}`,
granttype: "client",
},
}
);
list.push(salesData);
console.log(salesData.data.data.billList.shop_name);
if (salesData.data.data.pageInfo.pageTotal !== pageNo) {
pageNo += 1;
} else {
pageTotal = false;
}
}
} catch (error) {
console.log(error);
}
};

上面的实现是可行的。在捕获之前和while循环结束之后返回列表

} else {
pageTotal = false;
}
}
return list;
} catch (error) {
console.log(error);
}
};

很少有建议

  • 使用let/const而不是var
  • 可以详细说明更多错误处理

返回列表如下:

return res.status(200).json({list});

最新更新