jQuery.ajax({async: false})
是否仍然使用XMLHttpRequest对象?
如果是,请求如何同步?
函数定义中是否只有一些机制允许XHR发出的异步请求包装在同步包装器中?
我问,因为我想将异步函数调用包装成同步包装器。
修改:
我想为依赖项执行此操作。在加载所有外部依赖脚本之前,我不需要再运行任何东西,但是,我宁愿不同步加载每个文件。
基本上,我想要这个:
require(['lib1.js','lib2.js'])
Library1Function();
Library2Function();
同时加载lib1和lib2,但阻塞直到两者都加载。
我知道我可以使用回调执行此操作,但是如果我所包含的文件也以相同的方式包含依赖项,那么这不起作用。
EDITx2
回调不起作用的原因:
# lib2.js
window.Library2Function = function(input) {
alert(input);
}
# lib1.js
require('lib2.js', function() {
window.Library1Function = function() {
window.Library2Function('Hi there');
}
});
# main.js
require('lib1.js', function() {
window.Library1Function();
});
问题是,在main.js中,一旦加载并运行lib1.js,该回调就会被发送掉。
问题是,在加载lib2.js之前,实际上并没有定义Library2Function
,这在解析了 lib1.js之后发生。
答案 0 :(得分:1)
jQuery.ajax({async: false})
是否仍使用XMLHttpRequest
对象?
是
XMLHttpRequest.prototype.open
接受async
作为其第三个参数。如果是真(默认),则请求是异步的。否则,它是同步的。
我问,因为我想将异步函数调用包装成同步包装器。
你为什么要这样做?这很可能导致比“修复”更多的问题。