你能在异步gullow任务中启动条件任务吗



我想创建一个任务,该任务只在发生更改时构建整个项目。为此,我正在比较散列(与问题无关(。

const buildIfChanged = async () => {
const hash = await getHash();
const newHash = await getNewHash();
if (hash !== newHash) {
console.log("START");
const task = series(build, cleanup)();
console.log("END", task);
}
};

在本例中,taskundefined,因此我无法添加.on("end", ...)并在之后解析promise。我也等不及了。

问题是,因为我没有等待它完成,buildIfChanged任务甚至在build有机会运行之前就完成了。

有什么方法可以用现代的gullfile做到这一点吗?

我已经找到了在现代gulpfiles中如何做到这一点的解决方案。parallelseries的函数调用实际上将一个已完成的函数作为参数。

所以要解决这个问题,你可以做:

const buildIfChanged = async () => {
return new Promise(async (res, rej) => {
try {
const hash = await getHash();
const newHash = await getNewHash();
if (hash !== newHash) {
console.log("START");
const task = series(build, cleanup)(() => res()); // add the done function here
console.log("END", task);
}
} catch(e) {
rej(e);
}
})
};

最新更新