JQuery $.ajax() _sync_ 调用在语义上不是错误的吗?
Isn't a JQuery $.ajax() _synchronous_ call kind of semantically wrong?
我试图对api密钥发出JSON请求。
其他一些代码必须保持,直到我收到此密钥(或直到我收到超时错误(,并且由于我不想使用回调,我认为使用同步请求可能是一个很好的情况。
现在我正在使用jQuery,所以我最终在$.ajax(){}
调用中编写了"async: false"
。但后来我意识到我正在使用一种名为 $.ajax()
的方法来发出阻塞 http 请求。这怎么可能正确?jQuery是否仅仅出于代码实用性目的而支持"async: false"
(=在两种情况下都受益于使用$.ajax()
方法给出的代码一致性(?
使用设置为同步模式的简单XMLhttpRequest
方法重写请求在语义上不是更正确吗?
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.send(null);
if(req.status == 200) { alert(req.responseText); };
jQuery 库支持同步选项,因为底层XMLHTTPRequest
方法也支持它。当然,正常方法是发出异步请求,但同步选项可用于实际需要的极少数情况。
关于使用 ajax
方法使用同步请求,其中名称包含异步的"a";该方法的许多其他用法也存在相同的冲突。"x"代表XML,但它通常用于获取其他格式的数据,如JSON,HTML或纯文本而不是XML。您甚至可以使用 ajax
方法发出 JSONP 请求,其中响应永远不会只是 XML。
术语AJAX刚刚包含几种类型的服务器请求,其中只有中间部分"Javascript And"是共同点。