我一直在广泛阅读网络异步编程以及 JavaScript 和 jQuery 中回调的使用。我已经了解了 AJAX 的基础知识。我想不通的是在异步编程中不使用回调函数时的使用。
根据我的理解,简单地向函数添加回调并不能使其成为非阻塞/异步的。异步能力实际上是由环境(浏览器API)提供的。因此,向我编写的函数添加回调不会导致任何异步执行。
例如:
var X;
function Test(A, B, Callback) {
X=A+B*A*B;
Callback(X);
}
Test(99999,999999,function(Data) {
alert(Data);
});
alert("This is not printed first, as it would be in Async.");
在上面,我取了两个数字并对它们执行代数运算。即使我正在使用回调函数,代码执行也会在执行操作时被阻止。然后将执行回调,显示带有计算结果的警报。然后是下一个警报。如果我进行了 XMLHttpRequest 而不是代数运算,由于异步实现,我会首先收到第二个警报。代码流不会像在数学运算期间发生的那样在请求期间被阻塞。
因此,即使使用回调也会阻塞代码执行时,在非异步调用中使用回调有什么用?
最佳答案
一些非常常见的同步回调示例是 Array.prototype
上的方法:forEach
、map
、filter
等
回调的作用是提供可以在更大的算法中轻松交换的部分实现。一些设计模式,如 template method和 strategy想到了。
关于javascript - JavaScript 中的同步回调函数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584458/