【发布时间】:2017-06-28 20:28:18
【问题描述】:
我需要比较两个数组,第一个是数据库中的几个文件名,第二个是我已经下载到客户端的文件列表。想法是加载客户端上缺少的任何文件。
由于通过fs 的读取速度慢了两次,我尝试使用 Promises 等待一个函数在下一个函数开始之前完成。但不知怎的,我迷路了……
到目前为止我的代码:
let filesIneed = [];
let filesIhave = [];
let filesToFetch = [];
getLocalFiles().then(getFilesIneed).then(getfilesToRetreive);
function getLocalFiles() {
fs.readdir(localPath, (err, files) => {
files.forEach(file => {
filesIhave.push(file)
});
})
return Promise.all(filesIhave);
}
function getFilesIneed () {
for (let x of docs) {//this is my JSON
filesIneed.push(y.NameOfFileIShouldHave);
}
}
return Promise.all(filesIneed);
}
function getfilesToRetreive() {
filesToFetch = _.difference(filesIneed, filesIhave);
return Promise.all(filesToFetch);
}
console.log(filesToFetch);
我确实得到了第一个和第二个数组(“filesIneed”和“filesIhave”),但差异总是空的。所以也许我只是破坏了 Promise,因为这个概念对我来说是全新的,我知道我只理解了一半。
【问题讨论】:
标签: node.js lodash es6-promise fs