这是我的代码:
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() - 应该执行此特定 Transform 类中必须完成的任何操作...执行异步 I/O、处理事物等等...回调 - 在处理完提供的 block 时调用此函数”。
谁能指出我做错了什么。
最佳答案
我的错,promise回调中的上下文已经改变,所以正确的代码应该是:
const that = this;
Promise.all([promise1(file), promise2(file)]).then(function(values) {
...
that.push(file);
});
关于node.js - 如何创建异步 Gulp 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37020854/