JavaScript回调函数。。困惑的

JavaScript回调函数。。困惑的,javascript,function,callback,gulp,Javascript,Function,Callback,Gulp,我肯定这个问题的答案存在于某个地方,但不确定如何表达这个问题,并且在我尝试研究回调时没有找到我想要的东西 好的,我刚刚开始尝试Gulp来编译我的CSS,我认为它很棒!。。尽管对JavaScript毫无用处 我的代码如下,但我不明白这些回调是如何工作的。如何将回调设置为参数,然后从函数内部调用?我不明白。。函数是否基本上期望其中包含一些内容?正在设置什么值或期望运行什么?我似乎不明白 我经常在JavaScript中看到这一点,但不确定它是如何工作的。我查阅了函数和回调的视频和教程,它们是有意义的,

我肯定这个问题的答案存在于某个地方,但不确定如何表达这个问题,并且在我尝试研究回调时没有找到我想要的东西

好的,我刚刚开始尝试Gulp来编译我的CSS,我认为它很棒!。。尽管对JavaScript毫无用处

我的代码如下,但我不明白这些回调是如何工作的。如何将回调设置为参数,然后从函数内部调用?我不明白。。函数是否基本上期望其中包含一些内容?正在设置什么值或期望运行什么?我似乎不明白

我经常在JavaScript中看到这一点,但不确定它是如何工作的。我查阅了函数和回调的视频和教程,它们是有意义的,但我似乎从来没有找到解释这个概念的地方,这让我相信我找的不是正确的东西

我在承诺中也看到了同样的情况,其中设置了“resolve”或“reject”参数,但不确定当满足条件时会发生什么,或者设置了什么值以及在何处。。希望这是有意义的,并感谢任何有助于更好地理解这一点的帮助

const gulp=require('gulp');
const-sass=require('gulp-sass');
const browserSync=require('browser-sync');
//任务
//编译SASS
gulp.task('sass-compile',(回调)=>{
gulp.src('scss/*.scss')
.pipe(sass().on('error',sass.logError))
.pipe(吞咽目标(“css”))
.pipe(browserSync.stream());
console.log(“**********************************SCSS>CSS成功********************”);
回调();
});
//实时重新加载
gulp.task('browser-sync',(回调)=>{
browserSync.init({
代理:'http://localhost/test1',
港口:80
});
回调();
});
//观察者
gulp.task('default',gulp.series('browser-sync',(回调)=>{
gulp.watch('scss/*.scss',gulp.series('sass-compile'));
回调();

}));函数是一种对象类型。对象是值的一种类型

值可以存储在变量、对象属性中,并作为参数传递给函数

因此:

下面是一个简单的函数,称为

函数foo(){
控制台日志(“Foo”);
}

foo()在javascript中,函数是第一类对象,这意味着它们可以传递给其他函数。在很多情况下都可以使用它,但您所指的情况(gulp.task和newpromise)本质上是使用它在代码和它们的代码之间进行双向通信。当您使用gulp.task时,基本上会发生以下步骤

1) 你打电话给gulp.task,说“我想做一些工作”。您传入一个函数,说明您想做什么
2) 在适当的时候,gulp.task调用您的函数,但将另一个函数传递给它,告诉它“完成后,调用此函数让我知道”

gulp.task的简化版本如下所示:

const task=(名称,工作待办事项)=>{
const done=()=>{
log('task',name',已经让我知道它已经完成');
}
log('我被要求启动任务',名称);
设置超时(()=>{
日志('500毫秒过去;开始任务',名称);
待办事项(已完成);
}, 500);
}
任务('样本',(完成)=>{
console.log(“正在工作”);
设置超时(()=>{
log('1秒钟过去了,回电话让它知道我完成了');
完成();
}, 1000)
});