Tôi không chắc chắn làm thế nào để đặt câu hỏi rattling xung quanh trong đầu của tôi ngay bây giờ, vì vậy chịu với tôi. Tôi là thương hiệu mới cho lập trình không đồng bộ, và tôi đã tìm ra cách tốt nhất để học sẽ là tạo một trò chơi pong nhỏ. Tôi bắt đầu với một shootball() chức năng và chỉ trả lại một div xung quanh div khác. Làm thế nào tôi đã làm điều này là với một cái gì đó như thế này:Không đồng bộ Javascript đệ quy
function shootball(angle, speed){
angle = (angle/360.0)*2*Math.PI;
var ballmotion = setInterval(function(){
var nowx, nowy, minusY, plusX;
nowx = $("#ball").position().left;
nowy = $("#ball").position().top;
minusY = Math.sin(angle) * 4.0;
plusX = Math.cos(angle) * 4.0;
if(hitsWall(nowx+plusX, nowy-minusY)){
clearInterval(ballMotion);
shootball(newAngle(nowx+plusX, nowy-minusY), speed);
}
$("#ball").css("left", (nowx + plusX)).css("top", (nowy - minusY));
}, 10/speed);
}
Tôi không phải là một fan hâm mộ lớn của đệ quy không cần thiết lớn, nhưng tôi chỉ muốn thử nó ra. Lo và nhìn nó hoạt động chính xác như tôi mong đợi. Nhưng khi tôi bắt đầu ăn phần còn lại của chương trình, tôi đã không thể tránh được bản chất đệ quy này. Vì vậy, câu hỏi của tôi: Liệu javascript bằng cách nào đó nhận ra rằng các chức năng gọi "shootball" về cơ bản là hoàn thành sau khi gọi clearInterval? Hoặc thực hiện điều này thực sự tìm thấy chính nó tải lên ngăn xếp của tôi với hồ sơ kích hoạt không cần thiết? Cảm ơn trước cho bất kỳ chuyên môn này có thể trống lên.
Bạn có thể đặt điểm ngắt và xem mã gọi;) –
Nếu một hàm mất nhiều thời gian để gọi hơn khoảng thời gian, _setInterval_ có thể khó chịu, hãy cân nhắc sử dụng _setTimeout_ để thay thế. Ngoài ra, tôi chắc chắn rằng bạn có thể di chuyển phần lớn các chức năng bên ngoài biểu thức để một cá thể chức năng mới không được tạo ra mỗi lần. –
Tôi không hoàn toàn chắc chắn nhưng tôi tin rằng bất cứ khi nào quả bóng không chạm vào tường, ngăn xếp sẽ bị làm trống. – aledujke