我正在尝试使用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});