Итак, в javascript, поскольку он по своей природе управляется событиями, кажется, что setTimeout не блокируется. Это означает, что если я сделаю это:
setTimeout(function(){
console.log('sleeping');
}, 10);
console.log('prints first!!');
Он выведет ' сначала печатает !! '
, а затем ' спящий '
.
Интерпретатор js не будет ждать, пока будет выполнен setTimeout, вместо этого он сразу же выполнит фрагмент кода под ним. Когда пройдет 10 мс, затем он выполняет функцию обратного вызова.
Теперь я недавно поигрался с ruby. Я знаю, что он имеет неблокирующую поддержку в библиотеке событийной машины. Но мне интересно, сможем ли мы добиться чего-то похожего на пример setTimeout, который у меня только что написано на javascript с sleep
или какой-либо функцией в ruby изначально без поддержки событийной машины? Возможно ли это вообще с помощью процедуры закрытия, блока или чего-то еще? Спасибо.