在学习Gulp时,我看到了这个简单的例子,它在第一个任务完成后运行第二个任务:
var gulp = require('gulp');
var connect = require('gulp-connect');
// First task
gulp.task('connect', function() {
// No callback is provided to Gulp to indicate when the server is connected!
connect.server();
});
// Second task runs after the first task 'completes'
gulp.task('open', ['connect'], function() {
// v v v
// Question: since no callback is provided to indicate when 'connect' completes,
// how does Gulp know when to run this task?
// Some task here...
});
我的问题很简单。
我认为connect.server()
任务必须是异步的,因此在其实现中的某个地方是:
http.createServer(function(request, response) {
// Presumably, before the first request can be received,
// there must be an asynchronous delay while the server initializes
/// ...handle HTTP requests here...
});
我假设在第一个任务接收到第一个请求之前有一个异步延迟--只有当请求准备好被接收时,第一个任务才应该被认为是“完成”的,这样Gulp就可以运行第二个任务了。
在这种情况下,Gulp如何知道服务器已完全连接并接收请求,从而知道运行第二个任务?
我没有看到为Gulp提供的回调,Gulp可以使用它作为触发器来指示下一个任务已准备好运行。
1条答案
按热度按时间aij0ehis1#
在这种情况下,我不相信你可以100%肯定的两个原因。
第一个原因是没有向
connect
任务传递回调函数。Gulp允许任务将回调传入任务函数,以明确地发出任务完成的信号。
你可以这样做
gulp文件
服务器