javascript - 不要在循环中创建函数,.then 应该返回一个值或抛出
问题描述
我目前有一个我正在用 javascript 编写的函数。我正在点击 domo 的 api 并获取数据集的每个单独页面,直到在 do while 循环中没有其他东西可以抓取。然而,ESLINTR 对我大喊大叫:不要在循环中创建函数,并且 .then 应该返回一个值或抛出一个错误。我不确定如何消除这些错误。代码如下:
const getExistingDatasets = async () => {
let results = 0
let offSet = -50
do {
offSet = offSet + 50
await axios
.get(`https://api.domo.com/v1/datasets`, {
headers: {
Authorization: auth,
Accept: 'application/json'
},
params: {
offset: offSet
}
})
.then(r => {
results = r.data.length
const data = r.data
data.map(data => getDatasetColumns(data.id, data.name))
console.log(results)
})
} while (results > 49)
}
getExistingDatasets()
解决方案
首先,您应该避免将 async/await 与 promise .then 混合使用——在这种情况下这样做可以解决这两个问题
const getExistingDatasets = async() => {
let results = 0;
let offSet = -50;
const handleData = data =>
data.forEach(item => getDatasetColumns(item.id, item.name));
do {
offSet = offSet + 50;
let r = await axios
.get(`https://api.domo.com/v1/datasets`, {
headers: {
Authorization: auth,
Accept: 'application/json'
},
params: {
offset: offSet
}
});
results = r.data.length;
handleData(r.data);
console.log(results)
} while (results > 49)
}
getExistingDatasets();
编辑:添加“handleData”功能
推荐阅读
- ios - 检索 UNNotificationAttachment 时 UIImage 未完全加载
- audio - 是否可以使用 ffmpeg 创建自定义形状?
- javascript - 使用 socket.off 后如何收听 socke.io
- c# - Linux 中 X509Certificate2.Handle 指向什么结构?
- php - 试图获取非对象 laravel 8 和 livewire 的属性“名称”
- javascript - 理解 Math.max()
- azure - 异常:'启动失败,因为混合工作人员在计划作业开始和最后记录时不可用
- encryption - gpgtar 错误错误存储文件“video.mp4”:提供的对象太大
- swiftui - 使用 onDelete 时使索引超出范围
- python - 具有 datetime64[ns] 值的堆积条形图。使用第一列作为起点