Vì vậy, trong javascript vì nó được điều khiển bởi tính chất của nó có vẻ như là setTimeout không chặn. Điều này có nghĩa rằng nếu tôi làm điều này:không bị chặn setTimeout trong javascript vs ngủ trong ruby
setTimeout(function(){
console.log('sleeping');
}, 10);
console.log('prints first!!');
Nó sẽ ra 'prints first!!'
và sau đó 'sleeping'
.
Trình thông dịch viên js sẽ không đợi cho đến khi setTimeout được thực hiện thay vào đó nó thực thi đoạn mã bên dưới nó ngay lập tức. Khi 10ms trôi qua, nó sẽ thực hiện chức năng gọi lại.
Bây giờ tôi đã chơi xung quanh với ruby gần đây. Tôi biết rằng nó có hỗ trợ không chặn trong thư viện máy sự kiện. Nhưng tôi tự hỏi nếu chúng ta có thể đạt được một cái gì đó tương tự như setTimeout ví dụ tôi vừa viết bằng javascript với sleep
hoặc bất kỳ chức năng trong ruby nguyên bản mà không có sự kiện hỗ trợ máy? Điều này có thể ở tất cả bằng cách sử dụng đóng cửa proc hoặc khối hoặc bất cứ điều gì? Cảm ơn.
vâng, không giống như chuỗi sẽ là thứ tôi sẽ sử dụng. tôi biết async cần phải được thực hiện với máy sự kiện, nhưng tôi đã chỉ tò mò. thanks –
Vấn đề lớn với các chủ đề kích hoạt callback async đang cố gắng thực thi khối gọi lại đó trên chuỗi gọi. Điều này là khó khăn, trừ khi bạn có một vòng lặp sự kiện thích hợp, nơi có những nơi được xác định rõ ràng để thực thi chúng. – tadman