为什么回调函数不能在此代码中运行?

时间:2018-12-28 15:34:58

标签: callback

我一直在尝试运行以下代码,但仅运行第二个函数,而第一个不执行。谁能让我知道怎么了。

function first() {
    setTimeout(function(){
            console.log(1);
          }, 500 );
};
 
function second(first) {
    console.log(2);
};

second();

我希望程序在500毫秒后首先显示1,然后显示2。

3 个答案:

答案 0 :(得分:1)

您的期望:

function first() {
    setTimeout(function(){
        console.log(1);
        second();
    }, 500 );
};

function second() {
    console.log(2);
};

first();

第二个函数中的“第一个”参数不起作用。相反,您也可以这样做:

function first(callback) {
    setTimeout(function(){
        console.log(1);
        callback();
    }, 500 );
};

function second() {
    console.log(2);
};

first(second);

答案 1 :(得分:1)

我认为这是您要达到的效果。 first接受回调函数作为参数。然后需要在first函数内部的某个位置调用它。

function first(callback) {
  setTimeout(function() {
    console.log(1);
    callback(); // Calling the passed function
  }, 500);
};

function second() {
  console.log(2);
};

first(second); // Passing the 'second' function as a callback

答案 2 :(得分:0)

您刚刚叫第二。您最先调用回调函数是因为您期望您的代码应该像这样

function second() {
   setTimeout(function(){
       console.log(2);
   }, 500 );
};
     
function first() {
   console.log(1);
   second();
};

first();