我正在开发一个程序,该程序的主要对象是一个名为GLOB的对象。
在程序的第一阶段,我需要使用异步函数获取文件夹中的所有文件,并将结果分配给files属性,因此我使用了Promise:
GLOB.files = new Promise (resolve, reject) {
AsyncFunc(args, function(result) {
resolve(result);
});
}
然后,在较旧的阶段,我需要访问GLOB文件,但我需要进行一些CPU密集型工作,所以我使用async.eachLimit来限制会计数量,因此,整个GLOB将会成为一个承诺:
new Promise (resolve, reject) {
GLOB.files.then(function(files) {
var temporary1 = [];
var temporary2 = [];
async.eachLimit(files, 5, function(file, callback) {
// do something here
//
// temporary1.push(file); or temporary2.push(file);
}, function(error, files) {
// Work with temporary1 and temporary2 variable here, delete some unnecessary pieces and then reassign it to GLOB.files;
// REASSIGN GLOB.files
GLOB.files = temporary1.concat(temporary2);
// resolve passing the GLOB
resolve(GLOB);
});
});
}
现在能够访问我需要的所有内容,请致电GLOB.then,因为它是一个承诺。
GLOB.then(function(GLOB) {
// everything ok! :)
});
一切正常,我没有任何问题,但我觉得我做错了......