在对象的不同部分使用Promise

时间:2016-05-28 17:30:23

标签: javascript node.js

我正在开发一个程序,该程序的主要对象是一个名为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! :)

});

一切正常,我没有任何问题,但我觉得我做错了......

0 个答案:

没有答案