我試圖哄騙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「不起作用」不能提供足夠的信息進行診斷。如果一個函數沒有返回任何東西,你不能在其返回值上調用任何東西 - 如果你有一個示例建議,那麼這個例子是不正確的。 –