Une fonction synchrone ne peux pas être exécuté plusieurs fois simultanément. Simplement transformer cette fonction synchrone en fonction asynchrone au moyen du mot clé 'async' ne suffit pas à réellement rendre la routine (contenue dans cette fonction) asynchronone.
Tu as deux moyens pour enclencher l'asynchronicité d'une fonction :
1) Tu utilise 'setTimeOut' avec un délai de 0ms comme dans cette exemple :
const fn = function() {
const routine = function() {
// Ta routine qui doit fonctionner de façon asynchrone
};
return setTimeOut(routine, 0); // Lance la routine dès que possible de manière asynchrone, et renvoi un identifiant (un int) de ce 'setTimeOut'.
};
Avec cette méthode : impossible de contrôler le résultat de ta routine de manière pertinente. Tu peux très bien ajouter le résultat à un array de porter global, mais tu ne sera jamais en mesure de dire si tel ou tel résultat vient de l'exécution n°X de ta fonction ou de l'exécution n°X+1, etc...
2) Tu te sert d'une promesse résolue et de la méthode 'then' :
const fn = function() {
const routine = function() {
// Ta routine...
};
return Promise.resolve().then(routine); // 'Promise.resolve()' renvoi une première promesse résolue sans valeur, et 'then' renvoi une seconde promesse avec pour valeur le retour de 'routine'.
}
Sur cette exemple si, puisque tu renvoi une promesse, tu peux déterminer le résultat de chaque exécution sans problème, contrairement à l'exemple précédent. En revanche, si 'setTimeOut' est compatible avec les navigateurs les plus anciens dont on puisse pensé ; ça n'est pas le cas de 'Promise.resolve()' et des promesses en général. Tu peux oublier cette méthode si tu souhaite absolument que ton application soit compatible avec les utilisateurs d'IE.
qu'est-ce que tu entends pas "plusieurs fois en même temps" ?
Si tu veux dire par là "en parallèle", techniquement, ça n'arrive jamais avec javascript, mais tu peux "simuler" ce comportement grâce au deux méthodes que je t'ai montré lors de ma première réponse (bien que je doute que tu ais vraiment besoin de ce genre de procéder. Les cas où ils peuvent être utile sont plutôt rare.)
Si tu me parle plutôt de récursivité (parce qu'après tout, la récursivité, c'est exécuter "en même temps" la même fonction de manière imbriqué), oui c'est possible, mais les exécutions parentes sont "mises en pause" le temps du résultat des exécutions filles.
Dans tout les autres cas imaginables (et en vérité même dans les premiers cas que je décrit, si on s'en tien à la façon qu'a javascript de fonctionner), une fonction n'est jamais exécuter plusieurs fois "en même temps" en javascript. Il y a la mise en place d'un ordre/une organisation d'exécution. En revanche, cet ordre peut-être chamboulé au moyen d'événements par exemple.
Mais normalement, le fait de ne pas pouvoir exécuter "plusieurs fois en même temps" la même fonction ne t'empêche pas de l'appeler de manière successive et d'obtenir un résultat semblable.
Quand je clique sur le bouton ça lance la fonction de scanner.
Donc si je clique en même temps que le bouton de chaque entreprise ça me fait tourner la fonction en simultané
En fait je crois qu'on ne comprends pas le besoin et le problème. Car ce que tu décris n'est pas un problème car c'est le comportement normal. C'est pour ça que personnellement je ne comprends pas.
Quand je clique sur le bouton ça lance la fonction de scanner.
Donc si je clique en même temps que le bouton de chaque entreprise ça me fait tourner la fonction en simultané
En fait je crois qu'on ne comprends pas le besoin et le problème.
Quand on te dit qu'on ne comprend pas le besoin et que tu réponds juste "je n'arrive pas à faire la chose que je ne vous ai pas expliqué", c'est impossible de t'aider.
Déjà, cliquer sur "plusieurs boutons en même temps" c'est physiquement impossible.
Donc OUI, si tu cliques sur un bouton qui fait "lance ma fonction scanner", et si ensuite si tu cliques sur un autre bouton "lance ma fonction scanner", ça va fonctionner.
Donc essaye plutôt de nous montrer une capture de ton interface, ou tout simplement ton besoin exact, car pour le moment mes prédécesseurs ont répondu à ta question.
Afin d'obtenir de l'aide et une solution à votre problème, il est fortement recommandé de présenter clairement l'état actuel du problème en nous fournissant :
Un descriptif clair et précis du problème
La tentative actuelle de résolution que vous avez effectué (le code)
Le résultat attendu et le résultat actuel
Toutes pistes de recherches pouvant aider à la résolution
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL