2010-06-21 6 views
8

루비 지연 생성 방법은?루비 지연 생성 방법

나는 sleep 문을 사용했으나 내가 원하는 것을 내게주지 않았다.

puts "amit" 
sleep(10) 
puts "scj" 

나는 먼저 amit를 인쇄하고 나서 10 초의 지연 시간을두고 scj를 인쇄하기를 원한다.

하지만 위의 경우에는 10 초 동안 일시 중지 된 다음 amit와 scj가 함께 인쇄됩니다. 나는 그것을 원하지 않는다.

내가 원하는 말을하기를 바랍니다.

+2

어디에서 스크립트를 실행하고 있습니까? SciTE 또는 다른 편집기를 사용하는 대신 명령 줄에서 실행 해보십시오. – Beanish

+1

내가'puts 'bla'를 입력하면; 수면 (10); '... 계속하고있어!' "irb에서, 그것은 작동합니다. 컨텍스트가 무엇인지 더 설명하십시오. 플랫폼, 루비 버전, 어쩌면 작은 예제 ... – nathanvda

답변

8

잠자기를 요청하기 전에 $stdout.flush으로 전화하십시오. 출력은 보통 버퍼링됩니다 (보통 출력은 라인 버퍼 만 사용되기 때문에, 개행을 생성하는 puts은 플러시하지 않고 작동해야하지만, 분명히 여러분의 터미널에는 맞지 않습니다).

+0

nd plzz abt ur exmple u를 알려주십시오. 위의위의 puts 'bla'sleep (10)과 그 이후의 continue1은 무엇입니까 ?? –

6

재현 할 수 없습니다. 콘솔에서, 이것은 당신이 기대하는 것을 정확히 수행합니다

당신이 유사한 짧지 만 완전한 예제를 제공 할 수

puts "amit" 
sleep 10 
puts "scj" 

(리눅스에서 루비 1.8.6)

당신에게 무엇을하지 않는 원하는 - 또는 귀하의 컨텍스트를 더 설명?

웹 응용 프로그램을 작성하는 경우 브라우저는 전체 응답이 기록되면 데이터를 볼 수 있습니다. 즉,보고있는 내용을 설명 할 수 있습니다. 그렇다면 초기 응답을 먼저 작성한 다음 브라우저에서 다시 요청하도록하는 다른 접근 방식이 필요합니다. 시나리오가 없으면 서버 또는 클라이언트에서 지연 될 수 있습니다.

+0

actully jon 내가 원하는 것은 간단합니다. 나는이 두 문장 사이에 지연을 가져오고 싶지만 잠을 쓰고있는 것은 프로그램 실행이 sleep 명령문 자체에서 시작하는 것입니다. 나는 puts "amit"에서 실행 시작 흐름을 원합니다. 나는 10 초 지연과 마지막 진술을 원해. –