Je suis nouveau à JS et j'écris quelques API de repos simples dans Node.js pour mon application. Quelque part à l'intérieur du code, je veux attendre environ 5 secondes.
Je suis tellement confondu de l'utilisation de la promesse et de la méthode de délai d'attente normale et appelle la fonction ailleurs. Comme suit: p> puis appelez la fonction: p> ou p> appelez la fonction: p> wait(5000)
3 Réponses :
alors strong> vous utilisez lorsque vous souhaitez obtenir le résultat de la promesse, le code de promesse fonctionnera de toute façon même sans utiliser son résultat p>
attendre code> un
async code> fonction.
setTimeout(() => {
// Do something after 5 sec
}, 5000);
Mon problème est en fait de l'appel d'une fonction qui retourne la promesse.
premier cas. strong>
troisième cas: strong>
de appeler
1. Exécution asynchrone que Dosomething () code> n'attend pas
SLEEP code> fonction pour terminer l'exécution.
2. La promesse restera dans l'état en attente.
1.Pomise est résolu le puis () / attraper () code> est appelé.
de
2. Faire des Dosomething () Code> Exécuter après
Sleep () Code> a terminé son exécution. p>
1. La fonction ASYNC renvoie une promesse.
de
2. Attends / alors - fonctionne de la même manière (résout / rejeter une promesse et une erreur de retour / erreur).
de
3. Attendre ne peut être utilisé qu'à l'intérieur de la fonction ASYNC.
de
de
Je vous suggère de créer une seule fonction ASYNC qui contient la logique commerciale de l'API. P> attendre code> sans
alors code > entraînera une promesse en attente, mais cela n'affectera pas votre logique professionnelle.
p>
Oui, vous devez toujours utiliser
alors code> ou
attendre code> pour attendre le retard et reporter des choses comme
console.log ("5 secondes passées") code> après ça. Il n'y a pas de différence entre vos extraits en ce qui concerne cela.
BTW, vous devriez vraiment supprimer que
console.log ('5 secondes'); code> Ligne de la fonction code> SLEEP CODE> DÉMONTRE DU PARAMÈTRE POUR DES TEMPS DYNAMIQUES DE SALLEUR.
Lorsque vous avez une fonction qui retourne une promesse, vous devez l'utiliser à l'intérieur d'une autre fonction avec "attendre" pour l'appeler ou que vous utilisez "alors". Mais est-il possible de ne pas utiliser à la fois 'attendre et ensuite' et toujours obtenir la réponse? comme cela arrive dans le 1er cas.
Qu'entendez-vous par «réponse» et que se passe-t-il «dans le 1er cas»? Non, il est fondamentalement impossible de résulter immédiatement du futur, vous devez attendre une manière ou une autre.
Dans ces 3 cas, j'ai la même réponse. S'ils sont identiques, alors pourquoi je devrais utiliser ".Chen" après avoir appelé la fonction?
Si par "réponse", vous vous référez à la sortie du journal, le second cas doit être différent car il se connecte deux fois. Vous devez utiliser
puis code> car il vous permet de faire des choses différentes après la promesse remplie, par exemple.
Sleep (5000) .En ((() => console.log ('5 sec')) Code> vs
Sleep (3000) .Ce (() => console.log ('3 sec '))) code>. Si vous recherchez simplement l'avantage d'utiliser des promesses sur des rappels unis, voir Cette réponse