【发布时间】:2018-07-11 11:26:15
【问题描述】:
我对 javascript 回调函数有一个担忧。我的理解是,如果需要时间,回调函数应该允许其他语句继续进行。所以我创建了一个自定义回调函数来检查,但我没有得到预期的结果。我在这里做错什么了吗?
function test(param1,param2,cb){
if(typeof(cb) === 'function') return cb(param1,param2)
else console.log('im not a func');
}
function calbackFunc(a,b){
console.log('Hi i am '+a+' '+b);
}
setTimeout(function timeout(){
console.log('timeout')
},0);
test('callback','function',calbackFunc);
console.log('console');
输出
“嗨,我是回调函数”
“控制台”
“超时”
根据回调函数,“控制台”应该放在第一位。但它没有发生。像 setTimeout 工作正常。那为什么我的自定义回调函数表现得像 setTimeout。
【问题讨论】:
-
您在运行回调函数后正在记录
console。 -
“回调”只是作为参数传递的常规函数。所以它和其他函数一样是同步的。
-
您传递的回调在
test()完成执行之前运行。以 0 的延迟调用setTimeout不会立即运行传递的函数,它仍在计划中。它很快就会运行。 -
那么如何在不使用 SetTimeout 的情况下制作异步回调函数
标签: javascript callback