【发布时间】:2013-05-07 14:15:45
【问题描述】:
我正在尝试掌握 Javascript 异步函数和回调。
我陷入了回调函数的概念,我正在阅读一些地方:它们用于顺序执行代码(主要在 jquery 的上下文中,例如动画)和一些地方特别是在 Nodejs 的上下文中;它们用于并行执行异步并避免代码阻塞。
那么,该主题的专家能否阐明这一点并清除我心中的这个模糊问题(示例??)。 所以我可以考虑使用回调函数
或者这完全取决于您在代码中调用/放置回调函数的位置? .
谢谢,
P.S:我担心这个问题会很主观,但我仍然可以期待具体的答案(也许是一些例子)
编辑:实际上这是来自互联网的例子,这让我模棱两可:
function do_a(){
// simulate a time consuming function
setTimeout( function(){
console.log( '`do_a`: this takes longer than `do_b`' );
}, 1000 );
}
function do_b(){
console.log( '`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`' );
}
do_a();
do_b();
结果
`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`
`do_a`: this takes longer than `do_b`
根据我的理解,当 JS 是顺序的时,do_b 应该总是在 do_a 之后。
【问题讨论】:
-
JavaScript 是 JavaScript;它取决于上下文、用法、引擎等。
-
您能否提供一些您不确定是阻塞还是非阻塞的示例代码?
-
JavaScript 通常是同步的,但 setTimeout 根据定义是异步的。这是一个很好的入门:developer.mozilla.org/en-US/docs/DOM/window.setTimeout
标签: javascript node.js asynchronous callback asynccallback