我有一些代碼,將動態生成一個AJAX請求基於我通過AJAX請求檢索服務器的場景。單功能的多個承諾鏈
的想法是:
- 服務器提供了一個「方案」對我來說,生成一個Ajax請求。
- 我生成一個基於場景的AJAX請求。
- 然後我重複這個過程,一遍又一遍地循環。然而http://jsfiddle.net/3Lddzp9j/11/
,我試圖修改上面的代碼,這樣我就可以處理從最初的AJAX請求場景的數組:
我在這裏承諾這樣做。
IE:
{
"base": {
"frequency": "5000"
},
"endpoints": [
{
"method": "GET",
"type": "JSON",
"endPoint": "https://api.github.com/users/alvarengarichard",
"queryParams": {
"objectives": "objective1, objective2, objective3"
}
},
{
"method": "GET",
"type": "JSON",
"endPoint": "https://api.github.com/users/dkang",
"queryParams": {
"objectives": "objective1, objective2, objective3"
}
}
]
這似乎將是直線前進,但問題似乎是在「waitForTimeout」功能。
我無法弄清楚如何運行多個承諾鏈。我在「延遲」變量中有一系列的承諾,但鏈只在第一個中繼續 - 儘管處於for循環中。
任何人都可以提供見解,爲什麼這是?你可以看到這裏發生了什麼:http://jsfiddle.net/3Lddzp9j/10/
經典for循環沒有閉合問題。在異步代碼完成之前,'i'會增加很長的時間。此外,$ .ajax本身返回一個承諾,所以不需要用'$ .Deferred' – charlietfl 2015-03-03 00:30:20
創建它們。不知道我明白這一點。爲什麼增量會在異步代碼完成之前發生,因爲我希望一次執行多個AJAX調用。基本上,您將繼續爲每個單獨的場景....或延遲數組的每個部分.then()鏈。 – richie 2015-03-03 01:17:56
http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – charlietfl 2015-03-03 01:20:49