Javascript :Comment écrire une fonction qui sera exécutée de manière asynchrone ?
-
09-12-2019 - |
Question
J'ai quelques lignes de code que je souhaite exécuter de manière asynchrone en Javascript afin que cela ne ralentisse pas mon algorithme principal.Voir ce pseudo-code :
//main algorithm with critical code that should run as soon as possible
...
...
runInParallel(function(){
//time consuming unimportant code to shows some progress feedback to user
...
}
//the rest of the time critical algorithm
...
...
runInParallel(function(){
//time consuming unimportant code to shows some progress feedback to user
...
}
//and so on and so forth
J'ai cherché dans Stackoverflow comment écrire du code asynchrone en Javascript, mais les questions suivantes ne sont pas similaires aux miennes :
- comment exécuter une fonction javascript de manière asynchrone, sans utiliser setTimeout ?:c'est à propos du côté serveur
- Chargement javascript de manière asynchrone – Comment faire des rappels ?:il s'agit de charger le code source
Je suppose que je peux utiliser des minuteries à cette fin.Tout ce que je veux, c'est le corps de la fonction runInParallel() qui exécute un code efficacement en parallèle avec mon algorithme principal avec une priorité inférieure si possible.N'importe qui?
La solution
Javascript n'a pas de synchronisation/gestion des threads.Si vous souhaitez exécuter quelque chose de manière asynchrone, vous pouvez utiliser setTimeout
combiné avec un rappel pour être averti lorsque la fonction est terminée.
var asyncHandle = setTimeout(function () { asyncCode(); callback(); }, 10);
Le asyncHandle
peut être utilisé pour annuler le délai d'attente avant l'appel de la fonction.
Autres conseils
Si vous ciblez les navigateurs de support HTML5, accédez à HTML5 web ouvriers .
Vous pouvez également essayer cette intéressante, mais assez ancienne compilateur JavaScript qui permet une langueextension à cette fin.