项目中遇到上传多张图片或者切片文件上传,如果需要上传完成后再继续上传下一部分,可以用异步循环生成器完成,简易demo如下:
class GenCmp {
async *generator(total) {
let order = 0;
while (order < total) {
const data = await this.requestSomething(order);
order++;
yield data;
}
}
requestSomething(order) {
return new Promise((resolve) => {
setTimeout(() => {
console.log(order)
resolve('success_' + order);
}, 1000);
})
}
start() {
const total = 10;
let current = 0;
const generator = this.generator(total);
(async () => {
while (current < total) {
current++;
const data = await generator.next();
console.log(data)
}
})();
}
}
const gen = new GenCmp();
gen.start();