【发布时间】:2020-05-03 11:43:53
【问题描述】:
下面的代码 sn-p 没有按正确的顺序运行...... for 循环在任何其他函数可以解析之前在每次迭代中调用 downloadFile 函数调用,这会影响返回到最终回调的链接数.
我需要的是一个循环迭代,只有在 appendLinksList 函数解析并返回一个链接后才能完成。我假设我需要异步来阻止这些功能?我将如何使用 async 来获得正确的流程,而不是在其他任何东西可以解析值之前调用 downloadFiles 函数?
注意,回调函数上面已经定义了这段代码sn-p
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);
};
【问题讨论】:
标签: javascript node.js asynchronous