0
votes

Comment exécuter une fonction attendre après 3 secondes

J'ai besoin d'appeler une fonction attendre 3 secondes après la fin d'un appel API à l'aide de la méthode ASYNC / AWAIT, mais je n'ai aucune idée de la façon de le faire.

J'ai essayé d'envelopper le attendre Fonction dans la fonction Settimeout (), mais finalement obtenir l'erreur: SyntaxError: Await n'est valable que dans la fonction ASYNC xxx xxx < P> Le résultat attendu de la console:

$ Data: xxx


9 commentaires

@Jonaswilms Merci pour la réponse rapide. Je l'ai fait l'essayer, mais le résultat dans la console était: non défini ". Cela semble être quand une fonction de sécurité () est utilisée, les données" res "de la fonction * Tasks () ne sont pas transmises. dans la variable, tasseResponse


.Chen (res => res) - Qu'est-ce que ce nop pour?


S'il vous plaît ne postez pas de code multiligne dans un commentaire .... Si vous devez utiliser SettimeOut pour attendre la réponse à la fin, vous êtes faire quelque chose de mal ™ -


@Jaromandax, ok multiline enlevé. Je sais que je fais quelque chose de mal. C'est pourquoi je demande une assistance. 😃


Mais, sans la sécurité, le résultat attendu semble être le long des lignes du résultat que vous obtenez - alors pourquoi le retard?


Au fait, depuis Tâches de fonction renvoie une promesse, et ne doit jamais utiliser attendre Il n'est pas nécessaire de les baliser async


... (mais c'est un excellent indice pour les développeurs supplémentaires en utilisant cette fonction qu'elle retourne une promesse et doit être attendue)


L'API Je passe des appels pour configurer des périphériques réseau, tels que des commutateurs et des routeurs. Il y a un retard de lorsque la configuration est appuyée sur l'appareil lorsque la configuration est appliquée avec succès. L'API fournit ainsi une réponse * tâche "avec un identifiant. Après 3 secondes, je peux utiliser l'ID pour vérifier l'état de la pression de configuration.


Ensuite, retarder l'appel est raisonnable et les conseils de Jaromandax ne s'appliquent pas dans ce cas.


3 Réponses :


1
votes

Bien que cela puisse être facilement corrigé à l'aide d'une fonction async comme l'erreur suggère: xxx

Il peut être bénéfique pour acquisifier Settimeout As: xxx

car il peut être écrit comme suit: xxx

notes:

Ç1: Toujours déclarer des variables!

²: Ne faites jamais confiance à l'ASI pour vous sauver, utilisez des points-virgules!

-³: les noms de fonction dans IIFES vous aident pendant le débogage (mais ils sont facultatifs).


1 commentaires

Merci, vous essaierai rapidement de fournir des commentaires.



0
votes

génial! Merci à @jonaswilms et @selmikarim pour me faire remarquer dans la bonne direction.

J'ai réussi à obtenir le Settimeout () Utiliser par modifier mon bloc de code d'origine de: xxx

à xxx < P> Je ne sais pas si c'est la meilleure pratique mais cela fonctionne pour moi.

Merci beaucoup, tout le monde!


2 commentaires

Vous n'avez toujours pas besoin du .Chen (resp => resp) . Cela ne fait rien, alors supprimez-le.


respo = attendre la promesse1;



0
votes

Vous devez utiliser une fonction attendre à l'intérieur de Async.

Les mots-clés ASYNC et attendre sont absents de notre code de promesse. Nous les utilisons pour configurer des fonctions asynchrones qui appellent notre promesse et attendons qu'il soit terminé, comme celui-ci: xxx


1 commentaires

Tu as raison. C'était simplement une faute de frappe dans mon dernier commentaire. J'ai mis à jour pour réfléchir à la manière dont il est actuellement dans mon code. respo = attendre la promesse1.En (resp => resp)