我有一个这样的循环,它应该返回并退出循环,如果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