javascript - ordre d'exécution asynchrone dans chaque cycle de déclaration en réaction
黄舟
黄舟 2017-07-05 10:56:58
0
1
910
componentWillMount(){
    setTimeout(()=>{
      alert(1);
    },100)
  }

  componentDidMount(){
    setTimeout(()=>{
      alert(2);
    },100)
  }
  

Les deux fonctions de cycle de vie du composant ont des opérations asynchrones. L'ordre d'exécution est-il strictement conforme à l'ordre du cycle de déclaration, c'est-à-dire d'abord 1 puis 2 ? Ou n'êtes-vous pas sûr que l'ordre d'exécution soit basé sur le ordre d'insertion dans la file d'attente des messages ? Le problème peut être compris comme en supposant que le temps de retour du résultat asynchrone de ComponentWillMount est très long et que le temps de retour du résultat asynchrone de ComponentDidMount est très court. Est-il possible d'exécuter d'abord le résultat de rappel dans ComponentDidMount, puis de l'exécuter. le résultat du rappel dans composantWillMount

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(1)
漂亮男人

La question simplifiée est : en supposant que l'ordre de déclenchement de deux actions asynchrones A et B soit connu, l'ordre des mêmes délais dans A et B peut-il être garanti ? setTimeout

La réponse est évidemment non. Par exemple, lorsqu'il n'y a qu'un délai d'une microseconde entre A et B, il ne peut pas être garanti que deux

avec des retards énormes soient déclenchés dans l'ordre dans lequel setTimeout 就不能保证按照调用 setTimeout est appelé.

Vous ne pouvez pas compter sur cette relation temporelle fragile pour assurer l'ordre d'exécution du code. Dans Code Review, si vous rencontrez du code qui utilise cette relation pour implémenter des fonctions telles que l'initialisation des données et les requêtes asynchrones, le répondant donnera certainement son avis. Pour le flux de contrôle asynchrone, Promise/rendement et d'autres méthodes peuvent être utilisées pour garantir l'ordre d'exécution, qui ne sera pas décrit ici.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal