我正在使用ASP创建一个网站。. NET有一个大型的客户端,为站点处理许多事件。在客户端,我通过AJAX更新、删除和添加数据库(按此顺序!)。我的问题是,因为任务的顺序是非常重要的:第一-更新数据库,第二-从数据库删除,第三-添加到数据库。我应该使AJAX调用同步吗?通过改变"async"为false ?或者我应该让它默认为真??我应该采取哪种方法?
您应该通过仅发送一个ajax调用来完成所需的所有操作,并使该ajax调用async为false。
在这种情况下,最好使用async: true
并链接您的请求,以便它们一个接一个地发生。
$.ajax({
type:'put',
url: '/model/7256185',
data: {name: 'Lucy'}
}).then(function () {
return $.ajax({
type:'delete',
url: '/model/7256186'
});
}).then(function () {
return $.post('/model', {name: 'bob'});
}).then(function (result) {
console.log("All Done!");
console.log(result);
}, function () {
console.log('An error has occurred!');
console.log(arguments);
});
这确保请求按顺序发生,并且不会导致页面在请求期间出现中断(这是同步请求所发生的情况)。
如果你愿意的话,它也允许你使用一个加载的gif。对于同步请求,加载gif将不会旋转。
你绝对需要在业务层或后端数据层使用事务。
我通常更喜欢执行简短的任务(每个实体都有自己的存储库),并在数据层中尽可能少地保持连接打开,然后使用-例如- TransactionScope类管理业务层中的事务逻辑。
在此之后,以同步还是异步的方式调用服务/方法就不重要了。