我试图哄骗JavaScript进入同步的行为,但我迄今为止失败了。同步AJAX(违反诺言)
我试过30种或更多不同的方法,这里是最新尝试的基础上,另外一个答案,在这里StackOverflow:
function fnc() {
$.ajax({
type: 'GET',
url: "libraries/resources/data.json",
dataType: 'json',
success: function (data) {
...
objSomething = {
...
};
},
error: function() {}
});
}
fnc().then(function(objSomething) {
google.maps.event.addDomListener(window, 'load', function(){ initialize(objSomething); });
}).catch(function(objSomething) {
...
});
不过,我得到一个错误:
TypeError: undefined is not an object (evaluating 'fnc().then')
我试过的大多数方法都会导致类似的错误。
至于Google Maps代码,它确实有效(尽管并非总是如此,但由于代码执行的异步性)。
值得注意的是,虽然我能够从头开始编写复杂的代码,但当谈到底层机制时,我并不那么熟练。
我使用的是jQuery 2.2.2,通过Google API CDN。
你'fnc'功能不返回任何东西,所以你不能这样做'FNC(),则()'... – Cristy
@Cristy,根据我的例子。已经尝试过,有些人有回复声明,有些没有。我试过了一个return语句,但它不起作用。我希望你能看到一个例子 - 你认为 - 应该起作用。 –
@WayneSmallman \t“不起作用”不能提供足够的信息进行诊断。如果一个函数没有返回任何东西,你不能在其返回值上调用任何东西 - 如果你有一个示例建议,那么这个例子是不正确的。 –