我刚读过这本书" JavaScript:好的部分"
并且在回调函数部分中有一个例子
糟糕的方式:
request = prepare_the_request();
response = send_request_synchronously(request);
display(response);
推荐方式:
request = prepare_the_request();
send_request_asynchronously(request, function(response){
display(response);
}):
问题是,我无法理解不良方式示例所带来的差异和影响
任何人都能以简单的方式解释它吗?
答案 0 :(得分:0)
同步方法会停止您的程序。异步方法让它继续下去,通知你什么时候完成。这在浏览器中尤其糟糕 - 例如 - 如果您的程序阻塞,则不会执行任何其他操作,包括响应按钮,重新绘制屏幕,动画旋转GIFS ......没有。
在类比中,让我们看看你的孩子在晚餐前打扫桌子。在异步场景中,您告诉孩子清理桌子,然后看他。一个铃声响起,客人们来了,但你正忙着看着你的孩子打扫桌子。当他完成后,你点头,然后去打开门,然后带出午餐。客人脾气暴躁,因为你让他们在外面等候,午餐很冷。
在异步场景中,您告诉孩子清理桌子并告诉您何时完成。铃响了;你回答门,向客人展示。孩子打电话给你(“回调”)他已经完成了餐桌清洁工作,所以你把热食带到餐桌上,每个人都很开心。
答案 1 :(得分:0)
主要区别在于,在错误的方式中,同步请求将阻止UI,浏览器可能会保持无响应,直到请求返回。
如果发送异步请求,浏览器将使用另一个线程,主线程可以继续执行代码,而不是阻止UI。这种方法的挑战是display(response)
在发送请求后不能立即运行。它必须在请求从服务器返回后运行。这就是为什么我们创建一个CALLBACK函数,一旦响应回来就会调用它。
有帮助吗?