У меня есть приложение Electron. Он отправляет через ipcRenderer.send в renderer.js событие загрузки прослушивателю ipcMain.on в index.js:
renderer.js:
for (var i=0; i < data3.projects.length; i++) {
var project = data3.projects[i];
for (var j=0; j < project.files.length; j++) {
var file = project.files[j];
async function downloadFunction(file) {
await ipcRenderer.send("download", {
url: file.url,
location: "/Users/Marc/GreenPool/" + project.projectId + "/files/"
})
console.log("downloaded " + file.url);
}
await downloadFunction(file);
}
}
index.js:
ipcMain.on("download", function (event, info) {
console.log(info.location);
download(mb.window.webContents, info.url, {directory:info.location});
});
Так что предполагается загрузить (благодаря пакету electronic-dl npm) все файлы в файле project.files и сохранить их в файле info.location.
Когда в массиве data3.projects есть только один проект, он работает, файлы загружаются и сохраняются в папке "/ Users / Marc / GreenPool /" + project.projectId + "/files/".
Но если в массиве data3.projects содержится более одного значения, он сохраняет только загруженные файлы одного из data3.project, но не остальных:
У каждого есть файлы:
Никто не:
На первом рисунке видно, что один из файлов дублирован. Я думаю, что это показывает, что проблема связана с тем фактом, что после записи первых файлов в первую папку он почему-то все еще думает, что именно в этом, когда начинает писать вторые файлы (мы можем видеть это с файлом compute2Numbers ( 1) .js является дубликатом, потому что он находится не в той папке).
А лог консоли - это логика:
index.js:
/Users/Marc/GreenPool/qjggnatri/files/
/Users/Marc/GreenPool/qjggnatri/files/
/Users/Marc/GreenPool/qjggnatri/files/
/Users/Marc/GreenPool/qjggnatri/files/
/Users/Marc/GreenPool/z9g7_a1qa/files/
/Users/Marc/GreenPool/z9g7_a1qa/files/
/Users/Marc/GreenPool/z9g7_a1qa/files/
/Users/Marc/GreenPool/z9g7_a1qa/files/
renderer.js:
Кажется, это асинхронная проблема. Но я обернул запросы в функцию асинхронного ожидания, чтобы два события загрузки не перекрывали друг друга. И журналы консоли показывают это: сначала загружаются файлы первого значения в массиве data3.projects, затем загружаются файлы второго значения в массиве data3.projects.
Так как я могу сделать так, чтобы файлы сохранялись в нужной папке?