Vous traversez une crise que toute nouvelle lambda
L'utilisateur est parti.
Comme suggéré, vous pouvez utiliser context.done
pour s'arrêter. Cependant Il n'est pas recommandé de le faire, car cela n'est possible qu'en raison des versions d'exécution historiques de nodejs.
pourquoi ce délai d'attente se produit-il ?
Votre lambda peut arriver à la dernière ligne de votre code et continuer à fonctionner. En fait, il attend quelque chose - que la boucle d'événements soit vide.
ce que cela signifie ?
Dans nodejs, lorsque vous effectuez une opération asynchrone et enregistrez une fonction de rappel à exécuter une fois l'opération terminée, l'enregistrement se fait en quelque sorte dans la boucle d'événement.
En une ligne, c'est la boucle d'événements qui sait quelle fonction de rappel exécuter à la fin d'une opération asynchrone. Mais c'est un autre sujet :)
Retour à Lambda
Compte tenu des informations ci-dessus, il s'ensuit que lambda ne devrait pas s'arrêter avant que la boucle d'événement vide ne soit atteinte - car cela implique une procédure de suivi ne sera pas s'exécuter après le retour d'une opération asynchrone.
Que faire si vous avez toujours besoin d'arrêter l'exécution manuellement, quel que soit l'état de la boucle d'événement ? Au début de la fonction, exécutez :
context.callbackWaitsForEmptyEventLoop = false
Et ensuite utiliser le troisième paramètre que vous obtenez dans la signature du handler. Qui est le callback
.
le paramètre de rappel
C'est une fonction que vous appelez lorsque vous voulez terminer l'exécution.
Si vous l'appelez sans paramètres, ou avec le premier paramètre comme null et le texte comme second paramètre, l'appel est considéré comme une invocation réussie.
Pour faire échouer l'exécution de la lambda, vous pouvez appeler la fonction de rappel avec une valeur non nulle comme premier paramètre.