node.js – asynchrones Problem mit gulp.task
某草草
某草草 2017-05-16 13:21:33
0
2
843

Wie ist dieser Satz zu verstehen: Werden Ihre Aufgaben ausgeführt, bevor die Abhängigkeiten abgeschlossen sind? Stellen Sie sicher, dass Ihre Abhängigkeitsaufgaben die asynchronen Ausführungshinweise korrekt verwenden: Nehmen Sie einen Rückruf entgegen oder geben Sie ein Versprechen oder einen Ereignisstrom zurück.

gulpjs chinesische Website-Übersetzung: Wurde Ihre Aufgabe ausgeführt, bevor diese vorab abhängigen Aufgaben abgeschlossen wurden? Stellen Sie sicher, dass die Aufgaben in der Aufgabenliste, von denen Sie abhängig sind, die richtige asynchrone Ausführungsmethode verwenden: Verwenden Sie einen Rückruf oder geben Sie ein Versprechen oder einen Stream zurück.

Ich bin etwas verwirrt. Wenn kein Rückruf verwendet wird oder Promise/Stream zurückgegeben wird, ist diese Aufgabe dann keine asynchrone Aufgabe?

Es gibt auch gulp.task('mytask',['beforemytask']), was bedeutet, dass beforemytask ausgeführt wird, bevor mytask ausgeführt wird, was ein wenig synchron ist, aber muss beforemytask die richtige asynchrone Methode verwenden?

Ich bin verwirrt, bitte bitte Gott, meine Verwirrung zu klären

某草草
某草草

Antworte allen(2)
左手右手慢动作

如果没有使用callback或者返回promise/stream,那这个任务就不是异步任务了?

是的。gulp 任务序列执行依赖 Orchestrator,会对函数有无参数(callback)和返回值(promise/stream)做判断,从而决定是不是异步。

但是beforemytask需要使用正确的异步方式?

需要检测 beforemytask 结束,确保 mytask 在后面执行就用上面的方式,否则任何方式都可以。

小葫芦

你不知道这个任务什么时候跑完,后面加一个回调处理,单就这一个任务而言,所以这里的处理是异步的,
同步确实像你所说的一样,一个任务必须等另外一个任务执行完才能处理,有时候任务之间有依赖关系,

必须按照依赖关系处理,这里用同步去理解,我觉得没有问题,这是我的一点理解,仅供参考

下面举个例子

var gulp = require('gulp'); 
var minifycss = require('gulp-minify-css'); //压缩css
var uglify = require('gulp-uglify'); //压缩js
var del = require('del'); // 删除目录

gulp.task('clean',function() {
    return del(['dist/**']);
});
//压缩 css 
gulp.task('minify-css',['clean'], function() {
    return  gulp.src('./public/**/*.css')
            .pipe(minifycss())
            .pipe(gulp.dest('./dist'));
});

//压缩 js 
gulp.task('minify-js',['clean'], function() {
    return gulp.src('./public/**/*.js')
            .pipe(uglify())
            .pipe(gulp.dest('./dist'));
});
// 每一次跑任务 需要删除 dist 目录, 然后开始跑  minify-css 和 minify-js 
//执行任务 这里 minify-css 和 minify-js 就依赖前面 clean 
// 也就是说必须等  clean 这个任务跑完,minify-css 和 minify-js 才能执行
// 
// default 是默认执行的任务
gulp.task('default',[
    'clean','minify-css','minify-js'
]);
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage