Wie produziert man eine Verzögerung in Ruby?
Ich habe eine Schlafanweisung verwendet, aber sie hat mir nicht gegeben, was ich will.
%Vor%Ich möchte zuerst amit drucken, dann eine Verzögerung von 10 Sekunden, dann scj drucken.
Aber im obigen Fall wird es für 10 Sekunden pausieren und dann wird es amit und scj zusammen drucken. Ich will das nicht.
Ich hoffe du hast was ich sagen will.
Rufen Sie $stdout.flush
vor dem Anruf in den Ruhezustand an. Die Ausgabe ist wahrscheinlich gepuffert (obwohl die Ausgabe normalerweise nur mit Zeilen gepuffert ist, also puts
, was eine neue Zeile erzeugt, sollte ohne Flush funktionieren, aber das ist offensichtlich nicht wahr für Ihr Terminal).
Ich kann das nicht reproduzieren. Von einer Konsole aus macht dies genau das, was Sie erwarten:
%Vor%(Ruby 1.8.6 unter Linux)
Können Sie ein ähnliches kurzes, aber vollständiges Beispiel geben, das nicht tut, was Sie wollen - oder Ihren Kontext mehr erklären?
Wenn Sie eine Webanwendung schreiben, sieht der Browser möglicherweise nur alle Daten, nachdem die gesamte Antwort geschrieben wurde - dies würde erklären, was Sie sehen. Wenn dies der Fall ist, benötigen Sie einen anderen Ansatz, bei dem die erste Antwort zuerst geschrieben wird und dann vom Browser eine weitere Anfrage gestellt wird. Die Verzögerung könnte auf dem Server oder dem Client sein, abhängig von dem Szenario.
Tags und Links ruby