Приведенный ниже фрагмент кода работает не в правильном порядке ... for l oop вызывает вызов функции downloadFile на каждой итерации, прежде чем разрешатся какие-либо другие функции, что влияет на количество ссылок, возвращаемых в финал. callback.
Что мне нужно, так это итерация l oop до fini sh только после того, как функция appendLinksList разрешит и вернет ссылку. Я предполагаю, что мне нужен asyn c, чтобы заблокировать функции? Как бы я использовал asyn c, чтобы получить правильный поток вместо вызова функции downloadFiles, прежде чем что-либо еще сможет разрешить значение?
Обратите внимание, что функции обратного вызова были определены над этим фрагментом кода
const entries [ /* Array of objects containing a path_display property */];
let links = [];
for(let i = 0; i < entries.length; i++) {
const appendLinksList = link => {
if(i !== entries.length - 1) return links = [...links, link];
return callback(null, links);
};
const downloadFile = path => {
Dropbox.filesGetTemporaryLink({ path })
.then(file => {
return appendLinksList(file.link);
})
.catch(err => {
return res.status(500).json(err.message);
});
};
downloadFile(entries[i].path_display);
};