window.onload = ->
boxOrig1 = 10
boxOrig2 = 30
canvasW = 400
canvasH = 300
ctx = $("#canvas")[0].getContext('2d');
draw = (origin,dimension) ->
ctx.clearRect(0, 0, canvasW, canvasH)
ctx.fillStyle = 'rgb(200,0,0)'
ctx.fillRect(origin + boxOrig1, boxOrig1, dimension, dimension)
ctx.fillStyle = 'rgba(0, 0, 200, 0.5)'
ctx.fillRect(origin + boxOrig2, boxOrig2, dimension, dimension)
for m in [10..100] by 10
t = setTimeout (-> draw(m, 150)), 1000
t.clearTimeout
# draw(m,150)
# alert m
Như một bài tập, mã trên có nghĩa là vẽ một thiết kế nhỏ trên canvas, tạm dừng một giây rồi vẽ lại 10 pixel sang phải.Làm cách nào để sử dụng setTimout trong Coffeescript trong vòng lặp
Tôi có thể thấy rằng các cơ chế hoạt động tốt khi tôi ngắt vòng lặp với cảnh báo (như trong hai dòng nhận xét cuối), nhưng tôi không nhận được hành vi mong đợi với hàm setTimeout. Thiết kế chỉ xuất hiện ở vị trí ngoài cùng bên phải sau khi hết thời gian chờ, bỏ qua các bước gia tăng ở giữa.
Tôi đã thử nhiều cách khác nhau để làm điều này từ các ví dụ khác, nhưng nó chỉ làm tan chảy bộ não của tôi. Bất kỳ đề xuất?
Khái niệm quan trọng mà tôi đã bỏ lỡ là việc bỏ qua việc đóng cửa thông qua từ khóa "do". Như chúng ta Perlers muốn nói, TMTOWTDI. Cảm ơn tất cả! Bây giờ trở lại để thực hành :-) – user105090
Giải thích nổi bật. –
câu trả lời này có ích, đẹp nhất Trevor https://twitter.com/#!/karlseguin/status/165442250376085504 –