【探究】当页面关闭时,不同浏览器对尚未完成的异步请求如何处理?

目录

前言

  以使用$.ajax()方法发出一个异步请求为例,探究当执行完发出异步请求的同步代码但尚未执行异步回调的函数的时候,关闭浏览器,不同浏览器对此有何处理。并且,这个问题是因为看到了一种不规范写法而发现的—场景是,执行完相关保存任务(异步请求)后关闭当前页面。这种写法把window.close()相关代码却写在了$ajax()的外面(后面)。违背了在成功保存的回调内关闭页面的做法。


Chrome

  现有逻辑下(window.close写在外面)这个ajax请求会被丢弃,用fiddler抓包,没有”../mktools/customized-template-page!save.action?random=”+ new Date().getTime(),这个请求。


Firefox

  同chrome 。但是如果在$.ajax上打个断点,是可以看到请求发出去了的,也好理解,因为还没执行到window.close,未完成的请求不会被抛弃。


IE

  IE 即便不打断点,现有逻辑下(window.close写在外面),请求依然会发出去。