我有一個這樣的循環,它應該返回並退出循環,如果ajax請求成功,它也應該只重試10次,但它只是迭代循環10次,然後停止然後當請求成功時。Coffeescript重試循環不起作用
retryCount = 0
while (retryCount < 10)
$.ajax
type: "GET"
url: "http://" + proxyURL + "?"
dataType: "jsonp"
data:
url:
url + "?" + method + "&" + $.param
parameters: JSON.stringify parameters
success: (response) ->
data = response
console.log "----------"
console.log "METHOD: " + method
console.log parameters
console.log data
console.log "----------"
if data.contents.fault
if data.contents.fault.code is 256
console.log "fetching new token (" + retryCount + ")"
fetchNewToken ->
return callback(data.contents.result)
else
console.log "ERROR: " + $.trim(data.contents.fault.message)
if data.contents.result
if data.contents.result instanceof Array
if data.contents.result.length > 0
return callback(data.contents.result)
else
return callback(data.contents.result)
else
console.log "retrying " + method + " (" + retryCount + ")"
retryCount++
它是**異步**,所以你不能使用while循環。注意'success'是一個回調*函數* - 容易在coffescript中丟失 – Bergi
在ajax請求中設置'async:false'時,我也會發生同樣的情況。什麼是替代方法,解決它? – Marius