Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回调函数与异步应用_Javascript_Callback - Fatal编程技术网

Javascript 回调函数与异步应用

Javascript 回调函数与异步应用,javascript,callback,Javascript,Callback,我刚读了《JavaScript:好的部分》一书。 回调函数部分有一个例子 坏方法: 推荐方式: request = prepare_the_request(); send_request_asynchronously(request, function(response){ display(response); }): 问题是我无法理解坏方法示例的区别和效果。 有人能简单地解释一下吗?同步方法会停止您的程序。异步方法让它继续,当它们完成时通知您。这在浏览器中尤其糟糕,例如,如果

我刚读了《JavaScript:好的部分》一书。
回调函数部分有一个例子

坏方法:

推荐方式:

request = prepare_the_request();
send_request_asynchronously(request, function(response){
    display(response);
  }):

问题是我无法理解坏方法示例的区别和效果。

有人能简单地解释一下吗?

同步方法会停止您的程序。异步方法让它继续,当它们完成时通知您。这在浏览器中尤其糟糕,例如,如果你的程序阻塞了,其他什么都做不到,包括响应按钮、重新绘制屏幕、设置漩涡状GIF的动画。。。没什么

打个比方,让我们看看告诉你的孩子在晚饭前清理桌子。在异步场景中,你告诉孩子清理桌子,然后看着他。铃声响了,客人来了,但你正忙着看着你的孩子打扫桌子。当他做完后,你点点头,然后去开门,拿出午餐。客人很生气,因为你让他们等在外面,午餐又冷


在异步场景中,您告诉孩子清理桌子,并告诉您他什么时候完成。钟声响起;你去开门,带客人进去。孩子打电话给你(“回调”),说他已经清理好了桌子,所以你把热的食物拿出来放在上面,每个人都很高兴。

主要的区别是,在糟糕的方式中,,同步请求将阻塞用户界面,浏览器可能会保持无响应,直到请求返回

如果异步发送请求,浏览器将使用另一个线程,主线程可以继续执行代码,而不会阻塞UI。这种方法的挑战在于
显示(响应)
无法在发送请求后立即运行。它必须在请求从服务器返回后运行。这就是为什么我们要创建一个回调函数,一旦响应返回就会调用它


这有用吗?

不是一个直接的答案,但是里面有很多信息。“坏方法”的问题是,在等待响应时,浏览器将被冻结。“推荐方式”是异步执行的,这意味着直接在示例中代码之后的任何代码都将立即执行,而不是等待响应。因此,任何依赖于响应的代码都需要在回调中。哦,关键是“代码后面的任何代码”。我得到了它!谢谢
request = prepare_the_request();
send_request_asynchronously(request, function(response){
    display(response);
  }):