在不使用async的情况下,循环多个promise该怎么写会好点?
const fs = require('fs');
const path = require('path');
const upyun = require('upyun');
const {serviceName, account, passwd} = require('./password');
const service = new upyun.Service(serviceName, account, passwd);
const client = new upyun.Client(service);
const dirname = 'dist';
const readFile = (name) => {
return new Promise((resolve, reject) => {
fs.readFile(path.join(__dirname, dirname, name), (err, data) => {
if (err) {
return reject(err);
}
return resolve(data);
});
});
};
const readDir = (name) => {
return new Promise((resolve, reject) => {
fs.readdir(path.join(__dirname, name), (err, data) => {
if (err) {
return reject(err);
}
return resolve(data);
});
});
}
readDir(dirname).then((data) => {
for(let i = 0; i < data.length; i++) {
const filename = data[i];
readFile(filename).then((data) => {
return client.putFile(filename, data)
}).then((data) => {
console.log(`上传成功: ${filename}`);
}).catch(err => {
console.log(`上传失败: ${filename}`);
});
}
}).catch(err => {
console.log(err);
});
上述for循环的地方感觉怪怪的,还可以怎么写呢?