Θέλησα να δοκιμάσω αυτό που λέει ο Τάσος,
Χρησιμοποιώ την διαδικασία με html/javascript στην τοπική ΔΕΥΑ (υδρευση). Διαβάζει τις εισπράξεις των πελατών από το σύστημα ΔΙΑΣ.
Τα παραστατικά των εισπράξεων που μπορεί να δημιουργηθούν μπορεί να φτάνουν και τα 250 με 300 την φορά.
εδώ και 5 χρόνια δεν μου έχουν παραπονεθεί ότι κολλάει.
Εφτιαξα μια σελίδα για δοκιμή
Για να μπορέσω να εξομοιώσω την καθυστέρηση χρησιμοποίησα την παρακάτω:
function sleep_s(secs) {
secs = (+new Date) + secs * 1000;
while ((+new Date) < secs);
}
που όμως μπλοκάρει όλο τον browser, και το softone.
Εφτιαξα και μια loop για να δω πόσο αντέχει . Όντως έβγαλε μήνυμα μετά από 130 δευτερόλεπτα (Στα windows 10 το μήνυμα βγαίνει χωρίς κείμενο μόνο με το Ναί/Οχι να φαίνονται). Αν πατήσεις το Οχι, το script συνεχίζει για τα επόμενα 130 δευτερόλεπτα.
Ψάχνοντας στο ιντερνετ για τον περιορισμό, βρήκα κάπου ότι ο Internet explorer έχει ένα μέγιστο αριθμό συνεχόμενων εντολών που αν τον ξεπεράσει το script, τότε πετάει το μήνυμα για να το σταματήσει ή να το συνεχίσει.
άρα αυτό δεν αφορά χρόνο, αλλά γραμμές κώδικα που εκτελούνται .
Γιαυτό μάλλον στο κανονικό script δεν εμφανίζεται το μήνυμα , ενώ στην sleep_s όπου το while τρέχει συνεχόμενα , φτάνουμε στο όριο.
Παρόλα αυτά παίζοντας με το script, κατάφερα να το κάνω να παίζει χωρίς να πετάει το μήνυμα χρησιμοποιώντας τις
window.setTimeout
και την
X.PROCESSMESSAGES(); (Σημείωση: Σωκράτη αυτή την ξεχάσατε στο black book)
και την sleep_s
Άρα αν αντί να γράψεις τις διαδικασίες σε ένα for loop, τις γράφεις: να τρέξει η πρώτη και όταν τελειώσει να βάλει σε σειρά την επόμενη διαδικασία με την setTimeout , τότε δεν θα έχεις τίποτα που να μπλοκάρει και να υπερβαίνει τα όρια.
To αποτέλεσμα το έχω αφήσει στο
Δοκιμάστε το ανοίγοντας το ως web σελίδα μέσα από το softone
Το καλό με το να γράφεις στον embeded browser είναι ότι έχεις και full Softone support (X=external;) και full DOM support (με ότι κάνει ο browser και δεν τα κάνει η pure javascript)
Wishlist συνέχεια: Τι καλά να είχαμε DOM support σε όλα τα objects!