Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何进行javascript回调和停止异步-简单示例_Javascript_Callback - Fatal编程技术网

如何进行javascript回调和停止异步-简单示例

如何进行javascript回调和停止异步-简单示例,javascript,callback,Javascript,Callback,我正试图将注意力集中在javascript回调上,这让我感到很困难。 我有一段简单的代码:如何让filter函数在使用回调执行之前等待water函数完成 function plant() { console.log("Plant maize"); } function water() { setTimeout(function() { console.log("Water plant") },3000); } function fertilize

我正试图将注意力集中在javascript回调上,这让我感到很困难。 我有一段简单的代码:如何让filter函数在使用回调执行之前等待water函数完成

function plant() {
    console.log("Plant maize"); 
}

function water() {
    setTimeout(function() {
        console.log("Water plant")
      },3000);
}

function fertilizer() {
    console.log("Add fertilizer");
}

plant();
water();
fertilizer();  

通过从回调调用它

功能工厂(){
控制台日志(“种植玉米”);
}
功能水(){
setTimeout(函数(){
控制台日志(“水厂”)

肥料();//您可以向肥料添加一个回调,并将函数
肥料
传递给
方法

function plant() {
    console.log("Plant maize"); 
}

function water(callback) {
    setTimeout(function() {
        console.log("Water plant")
        callback();
      },3000);
}

function fertilizer() {
    console.log("Add fertilizer");
}

plant();
water( function () {
    fertilizer();
});

您不需要回调,只需在水超时内调用肥料函数即可:

function plant() {
    console.log("Plant maize"); 
}

function water() {
    setTimeout(function() {
        console.log("Water plant");
        fertilizer();
      },3000);
}

function fertilizer() {
    console.log("Add fertilizer");
}

plant();
water();
使用优秀的函数,您可以通过显式地向所有函数添加回调来实现:

async.series([ plant, water, fertilizer ], function(error, results){
  console.log("done!");
});

function plant(callback) {
    console.log("Plant maize"); 
    callback(null);
}

function water(callback) {
    setTimeout(function() {
        console.log("Water plant");
        callback(null);
      },3000);
}

function fertilizer(callback) {
    console.log("Add fertilizer");
    callback(null);
}

有两种基本方法可以做到这一点:

一种方法是使用回调,即将函数作为参数传递给
water
函数,当超时发生时将调用该函数。回调是在特定逻辑后按需调用的函数

function plant(){console.log(“plant玉米”)}
功能水(成功时){
setTimeout(函数(){
控制台日志(“水厂”)
/*请看这里,我们在成功处理剩余逻辑后调用传递的函数*/
if(typeof onSuccess==“函数”){onSuccess()}
},3000)
}
函数fa肥(){console.log(“添加肥料”)}
植物()
/*肥料函数作为回调传递给水函数*/

水(肥料)
通过将
肥料
函数作为对
函数的回调传递给后者,后者可以在通过超时调用的匿名函数内部调用前者…宽泛的主题,您可能应该阅读承诺。