safari支持Ajax同步请求吗,在同步“Ajax”请求之前强制在Webkit(Safari和Chrome)中重绘UI...

你为什么认为:

doSomethingBeforeRequest();

response = synchronousAjax();

doSomethingToTheDataAfterRequest(response);

,许多 “简单” 比:

doSomethingBeforeRequest();

properAjax(onSuccess(response){

doSomethingToTheDataAfterRequest(response);

};

为您的团队?我不是想争辩,但我很好奇的理由...

我能想到的同步代码的唯一好处是,你保存了一些花括号;以冻结浏览器为代价。

如果浏览器在请求*之前没有完成重绘,我能想到的唯一选择是使用延迟(如BenSwayne所建议的);这会使代码与异步调用一样复杂,并且在请求期间仍使浏览器无响应。

EDIT(某种答案的):

由于JavaScript的缺乏线程;超时和ajax调用(它允许浏览器在运行之前执行其他操作;有点像使用线程语言中的sleep()),这对于如何编写JavaScript非常重要。我知道它起初可能有点学习曲线(我知道我很困惑),但是没有任何明智的方法可以避免学习它。

我知道一个人可能会试图进行同步调用的情况是,有几个请求必须依次发送到服务器;但你可以做到这一点异步过,通过嵌套几个电话是这样的:

doSomethingBeforeRequest1();

ajax(onSuccess(response1){

doSomethingToTheDataAfterRequest1(response1);

ajax(onSuccess(response2){

doSomethingToTheDataAfterRequest2(response2);

};

};

但是,除非每次通话是相当缓慢完成,并要标明每一步什么进展;我宁愿建议您创建一项新服务,将两个操作与一个呼叫结合起来。 (如果您在其他一些情况下仍然需要单独使用这些服务,则该服务可以按顺序使用两个现有服务)。

(*我更惊讶的是,Firefox没有更新DOM ...)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值