我有以下gulp配置:
gulp.task('bar', function() {
return gulp.src(files, { base: './' })
.pipe(gulp.dest('dist'))
});
gulp.task('foo', ['bar'], function() {
// do something...
});
在foo
运行之前,bar
会等待function sendEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheets()[0];
var dataRange = dataSheet.getRange(2, 1, dataSheet.getMaxRows() - 1, 4);
var templateSheet = ss.getSheets()[1];
var emailTemplate = templateSheet.getRange("A1").getValue();
// Create one JavaScript object per row of data.
objects = getRowsData(dataSheet, dataRange);
// For every row object, create a personalized email from a template and
send
// it to the appropriate person.
for (var i = 0; i < objects.length; ++i) {
// Get a row object
var rowData = objects[i];
// Generate a personalized email.
// Given a template string, replace markers (for instance ${"First Name"})
with
// the corresponding value in a row object (for instance rowData.firstName).
var emailText = fillInTemplateFromObject(emailTemplate, rowData);
var emailSubject = "Quota di partecipazione";
MailApp.sendEmail(rowData.indirizzoEmail, emailSubject, emailText);
}
}
完成吗?
答案 0 :(得分:4)
根据文档here:
要在任务运行之前执行并完成的一系列任务。
所以是的,它会在运行任务之前完成。
另外,请注意以下注释。如果您的任务正在解决后台任务,并且未正确返回,则gulp可能会错误地认为您的任务已完成。
注意:在依赖项完成之前,您的任务是否正在运行?确保您的依赖项任务正确使用异步运行提示:接受回调或返回承诺或事件流。
答案 1 :(得分:1)
除了评论和其他答案之外,我只想补充一点,您需要返回stream,承诺或致电task function callback
parameter。
Gulp使用Orchestrator执行任务。
返回流(最常见的情况,类似于承诺)
gulp.task('somename', function(done) {
return gulp.src(res)
.pipe(minify())
.pipe(gulp.dest('build'));
});
使用回调(当返回时不是一个选项)
gulp.task('somename', function(done) {
// async function which does not return a stream like other gulp functions
getFilesAsync(function(err, res) {
// pass any errors to the callback
if (err) return done(err);
var stream = gulp.src(res)
.pipe(minify())
.pipe(gulp.dest('build'))
.on('end', done); // use the callback when it's done
});
});
如果您不执行其中任何一项操作,gulp将无法知道任务何时完成,并将立即开始下一项任务。