很抱歉,如果这是一个愚蠢的问题,但我对编程和试图编写一个分批处理事物的循环还很陌生。
const totalPages = 13;
const batchSize = 3;
const startFrom = 0;
let processed = startFrom || 1;
while (processed < totalPages) {
let start = processed;
let end = Math.min(start + batchSize, totalPages);
console.log(`processing batch: ${start}-${end}`);
processed = end;
}产出:
processing batch: 1-4
processing batch: 4-7
processing batch: 7-10
processing batch: 10-13然而,开始和结束都不是我所期望的,我需要的是:
processing batch: 1-3
processing batch: 4-6
processing batch: 7-9
processing batch: 10-12
processing batch: 13-13发布于 2022-02-26 06:51:34
从processed = 1开始,但这不是真的:此时还没有“处理”任何东西,所以应该是0。另一方面,start不应该等同于processed,而应该是另一个--因为它是继那些已经处理过的之后的下一个。
相应地修改其他表达式:
const totalPages = 13;
const batchSize = 3;
const startFrom = 0;
let processed = startFrom;
while (processed < totalPages) {
let start = processed + 1;
let end = Math.min(processed + batchSize, totalPages);
console.log(`processing batch: ${start}-${end}`);
processed = end;
}
为此使用for循环更为常见。您也可以将这些参数作为函数参数。最后,startFrom可能不是这个变量的好名称,因为它建议了一些项(从1开始)。我建议使用skip,这样0就意味着不应该跳过任何东西:
function printBatches(totalPages, batchSize, skip=0) {
for (let processed = skip; processed < totalPages; processed += batchSize) {
let start = processed + 1;
let end = Math.min(processed + batchSize, totalPages);
console.log(`processing batch: ${start}-${end}`);
}
}
printBatches(13, 3);
https://stackoverflow.com/questions/71274562
复制相似问题