javascript:对象未从promise函数

时间:2017-09-24 12:29:52

标签: javascript promise iteration

我有一个promise functin解析并将一个对象传递给另一个名为camparDir的函数,该对象未成功通过,我在那里犯了错误,代码是关于获取目录文件而不是获取每个文件的时间戳创建日期比我想要做两个目录的比较,问题是在comparDir的函数中我没有收到传递的obj,我想迭代它

提前感谢您的帮助

const getDirectories = function (src) {
    return new Promise(
        (resolve, reject) => {
          console.log(Date.now());
          glob(src+'/**/*',(err,res)=>{
            if(err){
              console.log('Error: ',err);
              reject(err);
            }else{
              serverTree = res;
              console.log('getDirectoreies Done')
              resolve(res)
            }
          });
        }
    );
  };

  const getTS = function(files){
    return new Promise(
      (resolve, reject) => {
        files.forEach(function(entry){
            fs.stat(entry, function(err, stats){
                serverTreeTS[entry] = Date.parse(stats.mtime);
            })
        })
        console.log('getTS done')
        let rrr = serverTreeTS
        resolve(rrr);
      }
    );
  };

  const comparDir = (trs) => {
    return new Promise(
      (resolve, reject) => {

        console.log(trs) /*
        the console shows this obj{}
          ./src/index.html: 1506183172000
          ./src/prom.js:    1505991591000
          ./src/starter.js: 1506255275000
          ./src/tree.json:  1506248976000
        */
        console.log(trs["./src/prom.js"]) // it shows: undefined

        Object.keys(trs).map(function(key, index) {
          console.log(key, index)         // nothing is logged
          console.log(trs[key])           // nothing is logged
        });

        for (var key in trs) {
          console.log(key, trs[key]); // nothing is logged
          if (trs.hasOwnProperty(key)) {
             console.log(key + ' -> ' + trs[key]); // nothing is logged
          }
       }
        resolve('done')
      }
    );
  };


  getDirectories('./src/').then(getTS).then(comparDir).then(function(){
    console.log(Date.now());
  }).catch(function (error) {
    console.log(error.message);
  });

注意:控制台中的trs日志稍后按照T.J.的说明完成。克劳德 enter image description here

0 个答案:

没有答案