Λύση: Το setInterval δεν μπορεί να εκτελεστεί κανονικά στο παρασκήνιο του προγράμματος περιήγησης.

Αναφορά

Worker

Τι είναι το "Web Worker"

Το "Web Worker" παρέχει έναν απλό τρόπο για το περιεχόμενο ιστού να εκτελεί σενάρια σε ένα νήμα φόντου. Τα νήματα μπορούν να εκτελέσουν εργασίες χωρίς να διαταράξουν το περιβάλλον εργασίας χρήστη. Επιπλέον, μπορούν να εκτελέσουν I / O χρησιμοποιώντας το XMLHttpRequest. Μόλις δημιουργηθεί, ένας εργαζόμενος μπορεί να στείλει ένα μήνυμα στον κώδικα JavaScript που τον δημιούργησε, δημοσιεύοντας το μήνυμα στον χειριστή συμβάντων που καθορίζεται από τον κώδικα (και αντίστροφα).

Οδηγίες

Στο παρακάτω δείγμα κώδικα, εφαρμόζουμε τον απλούστερο χρονοδιακόπτη και το αφήνουμε να ενεργοποιείται κάθε 100 χιλιοστά του δευτερολέπτου.

            var timmer = new Worker(
    URL.createObjectURL(
        new Blob(
            [
                "onmessage=function(event){setInterval(function(){postMessage(1);},100)}",
            ],
            { type: "application/javascript" }
        )
    )
);
timmer.onmessage = function (event) {
    console.log("get message");
};
timmer.postMessage("start");
        

Τυπική χρήση

Στο παραπάνω παράδειγμα, δημιουργήσαμε μια διεύθυνση χρησιμοποιώντας το createObjectURL. Δεδομένου ότι ο κώδικας που πρέπει να εκτελέσουμε είναι σχετικά απλός, αυτή η μέθοδος θα είναι πιο περιεκτική. Όταν ο κώδικας στην εργασία που πρέπει να εκτελέσουμε είναι πιο περίπλοκος, μπορούμε να γράψουμε την εργασία ξεχωριστά ως ανεξάρτητο αρχείο js. Για λεπτομέρειες, ανατρέξτε στον ακόλουθο κωδικό. Υπάρχουν πιο λεπτομερείς εισαγωγές, μπορείτε να ανατρέξετε στο υλικό αναφοράς στην κορυφή του άρθρου.

            var timmer = new Worker('worker.js');