У меня есть следующий фрагмент кода ниже.В настоящее время он работает, но я надеюсь немного его оптимизировать / реорганизовать.
По сути, он выбирает данные JSON, извлекает URL-адреса для ряда PDF-файлов из ответа, а затем загружает эти PDF-файлы в папку..
Я надеюсь реорганизовать этот код для обработки PDF-файлов после их загрузки.В настоящее время я не уверен, как это сделать.Существует много вложенных асинхронных функций.
Как я могу реорганизовать это, чтобы позволить мне подключиться к другому вызову .then
перед моим обработчиком ошибок, чтобы я мог затем обрабатывать PDF-файлы, которые
const axios = require("axios");
const moment = require("moment");
const fs = require("fs");
const download = require("download");
const mkdirp = require("mkdirp"); // Makes nested files...
const getDirName = require("path").dirname; // Current directory name...
const today = moment().format("YYYY-MM-DD");
function writeFile(path, contents, cb){
mkdirp(getDirName(path), function(err){
if (err) return cb(err)
fs.writeFile(path, contents, cb)
})
};
axios.get(`http://federalregister.gov/api/v1/public-inspection-documents.json?conditions%5Bavailable_on%5D=${today}`)
.then((res) => {
res.data.results.forEach((item) => {
download(item.pdf_url).then((data) => {
writeFile(`${__dirname}/${today}/${item.pdf_file_name}`, data, (err) => {
if(err){
console.log(err);
} else {
console.log("FILE WRITTEN: ", item.pdf_file_name);
}
})
})
})
})
.catch((err) => {
console.log("COULD NOT DOWNLOAD FILES: \n", err);
})
Спасибо за любую помощь, которую вы все можете предоставить.
PS –– Когда я просто нажимаю на вызов .then
прямо сейчас, он срабатывает немедленно.Это означает, что мой цикл forEach не блокирует?Я думал, что циклы forEach блокируются.