2015-02-02 2 views
0

Рассмотрим example приведенный на странице BrowserSync + Глоток относительно Browser Reloading, особенно эта часть:Неуверенный об пример, приведенный на BrowserSync странице

// use default task to launch BrowserSync and watch JS files 
gulp.task('default', ['browser-sync'], function() { 

    // add browserSync.reload to the tasks array to make 
    // all browsers reload after tasks are complete. 
    gulp.watch("js/*.js", ['js', browserSync.reload]); 
}); 

В зависимости задач выполняются асинхронно, (здесь: js и browserSync.reload) не могло ли случиться, что перезагрузка заканчивается перед заданием js?

ответ

1

Да, в соответствии с документацией, это возможность.

Off той же странице ...

(make sure you return the stream from your tasks to ensure the browser is reloaded at the correct time) 

Если это асинхронная задача будет просто стрелять, а не возвращать ничего, и наблюдатель не будет знать, чтобы обновить. Или он может перезагрузиться, прежде чем процесс будет завершен.

Чтобы обойти это, вы должны добавлять обратные вызовы к своим задачам.

gulp.task('somename', function() { 
    var stream = gulp.src('client/**/*.js') 
    .pipe(minify()) 
    .pipe(gulp.dest('build')); 
    return stream; 
}); 

Просто верните поток, чтобы Gulp знал, что происходит. Затем установите часы для выполнения этой задачи вы хотите:

gulp.task('default', ['browser-sync'], function() { 
    // Watched tasks are run in parallel, not in series. 
    gulp.watch(['*.js'], ['somename', browserSync.reload]); 
}); 

Это все включено в документации:

https://github.com/gulpjs/gulp/blob/master/docs/API.md#async-task-support

Смежные вопросы