Fla*_*ash 6 javascript design-patterns functional-programming tail-recursion node.js
假设我想向服务器发送异步AJAX请求,当它响应时发送另一个请求并永远重复:
function sendXHR(url, callback) {
// Send XMLHttpRequest to server and call callback when response is received
}
function infinite() {
sendXHR('url/path', infinite);
}
infinite();
Run Code Online (Sandbox Code Playgroud)
我在这里假设我们很快就会耗尽堆栈空间,所以我怎么能这样做(没有阻塞)?
传递回调而不是使用回调的模式return特别受欢迎node.js.人们如何创造无限循环?我不相信大多数JS引擎会进行任何类型的尾调用优化.
如果您的ajax调用是异步的,则不会耗尽堆栈空间,因为sendXHR()在发送ajax请求后立即返回.然后在ajax响应到来之后的某个时间调用回调.没有堆栈累积.
如果你的ajax调用是同步的,并且你想允许其他事件以及在javascript环境中不会发生什么,那么你可以这样:
function sendXHR(url, callback) {
// Send XMLHttpRequest to server and call callback when response is received
}
function infinite() {
sendXHR('url/path');
setTimeout(infinite, 1);
}
infinite();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4438 次 |
| 最近记录: |