1.promise链
function uploadFile(file) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`上传文件: ${file}`);
resolve();
}, 1000);
});
}
function serialUpload(files) {
let promise = Promise.resolve();
files.forEach(file => {
promise = promise.then(() => uploadFile(file));
});
return promise;
}
const files = ['file1', 'file2', 'file3'];
serialUpload(files)
.then(() => {
console.log('所有文件上传完成');
})
.catch(error => {
console.error('上传出错:', error);
});
2.递归
function uploadFile(file) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`上传文件: ${file}`);
resolve();
}, 1000);
});
}
function recursiveUpload(files, index) {
if (index >= files.length) {
return Promise.resolve();
}
return uploadFile(files[index]).then(() => {
return recursiveUpload(files, index + 1);
});
}
const files = ['file1', 'file2', 'file3'];
recursiveUpload(files, 0)
.then(() => {
console.log('所有文件上传完成');
})
.catch(error => {
console.error('上传出错:', error);
});
3.aysnc/await
function uploadFile(file) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`上传文件: ${file}`);
resolve();
}, 1000);
});
}
async function serialUpload(files) {
for (const file of files) {
await uploadFile(file);
}
}
const files = ['file1', 'file2', 'file3'];
serialUpload(files)
.then(() => {
console.log('所有文件上传完成');
})
.catch(error => {
console.error('上传出错:', error);
});