我在pkgcloud中使用client.upload来上传文件目录。如何在所有流完成后执行回调?是否有一种内置的方法来注册每个流的“finish”事件,并在它们都被触发后执行回调?
var filesToUpload = fs.readdirSync("./local_path"); // will make this async
for(let file of filesToUpload) {
var writeStream = client.upload({
container: "mycontainer",
remote: file
});
// seems like I should register finish events with something
writeStream.on("finish", registerThisWithSomething);
fs.createReadStream("./local_path/" + file).pipe(writeStream);
}
2条答案
按热度按时间1hdlvixo1#
一种方法是为每次上传生成一个
Promise
任务,然后使用Promise.all()
。假设你使用的是ES6,那么代码看起来像这样:
或者,如果您可以访问
async / await
-您可以使用它。例如:6kkfgxo02#
看看NodeDir,它有像
readFilesStream
/promiseFiles
等方法。