我一直在尝试运行以下代码,但仅运行第二个函数,而第一个不执行。谁能让我知道怎么了。
function first() {
setTimeout(function(){
console.log(1);
}, 500 );
};
function second(first) {
console.log(2);
};
second();
我希望程序在500毫秒后首先显示1,然后显示2。
答案 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();