function f1(callback){ setTimeout(function () { // f1的任务代码 callback(); }, 1000); }f1(function(){console.log('我居然第二个输出!');})console.log('我第一个输出!哈哈哈哈');
上面code中,f1 函数先被执行,然而却后输出,这就是因为用了setTimeout。记住下面这句话:
setTimeout、setInterval 这两个函数都是异步的,,即:
他们的调用时序和程序的主流程是相对独立的,所以没有办法在主体里面等待它们的返回值,它们被打开的时候程序也不会停下来等待,否则也就失去了setTimeout及setInterval的意义了
(setTimeout的延迟时间为0,这个hack经常被用到,settimeout调用的函数其实就是一个callback的体现)
说了这么多,我主要想说的就是:javascript之所以能实现异步,主要靠的是setTimeout ,而不仅仅是callback!!!
希望能给你们带来帮助。欢迎探讨。
参考资料:
%EF%BC%BFjavascript.html
当你开展的事业从事的行动穷途末路大势已去的时候,