3847 Stimmen

Was ist die JavaScript-Version von sleep()?

Gibt es einen besseren Weg zur Entwicklung einer sleep in JavaScript als die folgenden pausecomp Funktion ( entnommen von hier )?

function pausecomp(millis)
{
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate-date < millis);
}

Es handelt sich nicht um ein Duplikat von Sleep in JavaScript - Verzögerung zwischen Aktionen Ich möchte eine echter Schlaf in der Mitte einer Funktion und nicht eine Verzögerung, bevor ein Teil des Codes ausgeführt wird.

-3voto

ByteMe Punkte 949

Ich habe Promise ist kein Konstruktor mit der oberen Antwort. Wenn Sie bluebird importieren, können Sie dies tun. Es ist meiner Meinung nach die einfachste Lösung.

import * as Promise from 'bluebird';

await Promise.delay(5000)

-3voto

Stitch Punkte 1

Es ist jetzt auch möglich, das systemeigene Modul util zu verwenden, um reguläre Sync-Funktionen zu versprechen.

const { promisify } = require('util')
const sleep = promisify(setTimeout)

module.exports = () => {
  await someAsyncFunction()
  await sleep(2000)
  console.log('2 seconds later...')
}

-4voto

ceremcem Punkte 3212

Unter LiveScript (das zu JavaScript kompiliert), können Sie wie folgt vorgehen:

sleep = (ms, func) -> set-timeout func, ms

console.log "hello-1"
<- sleep 2000ms
console.log "hello-2"
<- sleep 2000ms
console.log "hello-3"

-7voto

TheComputerGuy Punkte 11

Das könnte funktionieren. Bei mir hat es in C und JavaScript funktioniert.

function sleep(time) {
  var x = 0;
  for(x = 0;x < time;x++) {/* Do nothing */}
}

-8voto

CarstenP Punkte 113

Alle Lösungen, die ich bisher gelesen habe, lauteten: "Lass uns schlafen gehen und morgen sehen wir weiter".

setInterval(Rückruf, Zeit) würde lange warten und dann den Callback aufrufen, während Blockierung der Laufzeit. Die aktuelle Implementierung von "setInterval" ist weit davon entfernt, thread-save zu sein, nicht einmal im Hinblick auf die Gleichzeitigkeit.

Während die erwähnten spärlichen Lösungen aussehen wie, raten Sie mal, C# ( lacht ), funktionieren sie immer noch nicht wie in C#/.NET. Sie funktionieren immer noch wie in C.

JavaScript kann derzeit no eine Architektur für echtes Multithreading bieten. Der beste Ansatz wäre TypeScript, aber das ist immer noch so wenig eine echte Lösung, dass es... weh tut. JavaScript und jQuery und AJAX und jNode und sogar TypeScript sind nur ein Haufen von Möchtegerns die sich auf die guten und schlechten Launen der Durchführenden verlassen. Tatsache. Punktum.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X