2016-05-04 83 views
0

這裏是我的代碼:如何創建異步Gulp插件?

const through = require('through2'); 

function gulpPlugin() { 
    let filesCount = 0; 

    function transform(file, encoding, callback) { 
     if (file.stat.isDirectory()) 
      return callback(); 

     Promise.all([promise1(file), promise2(file)]).then(function(values) { 
      if (values[0] === values[1]) { 
       this.push(file); 
       ++filesCount; 
      } 
      callback(); 
     }); 
    } 

    function flush(callback) { 
     console.log('files:', filesCount); 
     callback(); 
    } 

    return through.obj(transform, flush); 
} 

具有callback參數意味着transform()可以異步運行,然而,這是不行的,所以沒有文件被通過插件通過。

文檔上的基本stream.Transform聲稱「變換() - 應該做的一切在這特定的做Transform類...做異步 I/O,處理的事情,等等...回調 - 當你完成處理提供的塊時調用這個函數「。

任何人都可以指出我做錯了什麼。

回答

0

我的錯,在承諾回調的背景下發生了變化,所以正確的代碼應該是:

const that = this; 

Promise.all([promise1(file), promise2(file)]).then(function(values) { 
    ... 
    that.push(file); 
});