En JavaScript, avec les attendent à l'intérieur d'un bloc de la boucle de la boucle?

Prendre la boucle suivante:

for(var i=0; i<100; ++i){
    let result = await some_slow_async_function();
    do_something_with_result();
}
  1. Ne await bloc de la boucle? Ou ne le i continuer à être incrémenté tout awaiting?

  2. Est de l'ordre de do_something_with_result() garanti séquentielle à l'égard de i? Ou cela dépend-il de la façon dont rapidement la awaited fonction pour chaque i?

  • Avez-vous vraiment essayé?
  • Oui, je suis un séquentielle résultat. Je n'étais pas sûr si c'était une coïncidence (la fonction async est effectivement rapide). Je n'étais pas sûr que ce soit de pousser tous les async des appels de fonction dans un tableau, puis faire un seul await Promise.all(arr), ou si cette forme est correcte, et quelque chose d'autre était d'entraver l'souhaité l'asynchronicité. Si je fais un seul await pour le tout, alors que j'aurais du entrer dans Promise.map afin de traiter chacun. Il me fait me remettre en question si .then est mieux que async/await dans cette situation.
  • JS est déterministe. Soit la fonction est asynchrone ou il ne l'est pas, il ne dépend jamais d' "comment rapide" quelque chose est exécutée. Concernant Promise.all, qui fait quelque chose de différent - si c'est encore correct (ou même plus souhaitable) dépend de vos besoins.
  • Le temps d'une fonction à exécuter est non-déterministe, lorsqu'il fait un async opération qui consiste à une ressource externe, par exemple de base de données, e/s de fichier.
  • Oui, mais tant qu'il est asynchrone, il ne sera jamais à appeler ses rappels immédiatement, et toujours exécuter jusqu'à la fin de la synchronisation, le premier code.
InformationsquelleAutor smorgs | 2017-06-07