JSVM是否只在一个线程中运行? 我想知道如何在VM内部执行JavaScript函数。下面 的源代码是有趣:执行JavaScript函数的模型
// include jQuery as $
function test() {
$.ajax({url:"xxx.com"})
.success(function() {alert("success 1");})
.fail(function() {alert("fail 1");});
$.ajax({url:"yyy.com"})
.success(function() {alert("success 2");})
.fail(function() {alert("fail 2");});
while(true);
}
它会使模具循环的“而”行,从来没有弹出任何警告对话框,显示没有“成功”,也不是“失败”。 我们知道在$ .ajax中,VM创建XMLHttpRequest并发送一个HTTP请求。 发出两个请求后,它会遇到“while”行。 因此,我形象的JSVM:
1)一次只能处理函数调用。 (功能是原子的)
2)遵循规则:先来,先服务。
我的想法对吗? 有没有人可以解释JSVM的内部实现?
更具体的, 如果使用AngularJS开发一个前端应用程序,我们希望做一些事情,然后立即在表单提交事件如ng-submit中记录一个日志到远程服务器。
function ngSubmitTest() {
doA();
recordA(ajax, remoteServer); // must after doA()
}
如果recordA使用AJAX,我们应该确保recordA完成之前,NG-提交重定向页面同时杀掉旧的一页,也是VM(如果旧的页面被杀害,该recordA可能无法完成)。一种解决方案是使用async = false进行AJAX。我想知道是否有其他解决方案?
谢谢。
谢谢user3417400〜 –