js回调同步回调异步回调
⼀、回调
回调来说有⼀个关键词:函数参数,即把函数A当做参数传递到另⼀个函数B之中,这样当B(A)时,在B中会“”回过头“”再调⽤函数A(),把函数A叫做回调函数。
为了更⽅便的记忆:请记住 函数参数 回过头再调⽤。⼆、⾸先先看⼀下没有⽤回调的情形
function f1() {
var name = prompt('请输⼊你的名字。'); return name}
function f2(name) { alert('Hello ' + name);}
var name = f1()f2(name)
log(333333333)
上述代码先执⾏f1,再执⾏f2,如果f1需要消耗很长时间来执⾏,f2需要等待,故是同步操作,且没有⽤到回调。最后执⾏log(333333333)
三 、同步回调 的情形
function f2(name) { alert('Hello ' + name);}
function f1(callback) {
var name = prompt('请输⼊你的名字。'); callback(name);}
f1(f2);
log(222222222222)
上述代码,f2作为f1的回调函数,执⾏的时候,按顺序执⾏f1内的部分,f1执⾏到f2时,执⾏f2,再⼀次执⾏f1内剩下的部分,此时同样是同步操作。最后执⾏log(222222222222)
四、异步回调的情形
function f2(name) { alert('Hello ' + name);}
function f1(callback) { setTimeout(function () {
var name = prompt('请输⼊你的名字。'); callback(name); }, 10000);}
f1(f2);
log(11111111111111)
此时f1内多了setTimeout函数,作⽤:延迟10000执⾏该函数内function部分。
注意:此时实验结果:是⾸先执⾏log(11111111111111),当延迟10000之后,执⾏function,再回调f2,此时是异步操作。