Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment transmettre les paramètres de fermeture de rappel aux variables d'environnement externes dans JS

Comme dans la question, comment transmettre les données des paramètres formels dans la fermeture aux variables externes

var outer;
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
var gc = new BMap.Geocoder();
gc.getLocation(point, function(rs){
   var addComp = rs.addressComponents;
    //how to store this string to variable outer;
   //outer = addComp.province + ", " + addComp.city + ", " + addComp.district + ", " +      addComp.street + ", " + addComp.streetNumber);
});

L'utilisation de l'affectation ne peut garantir que les données contenues dans la fermeture sont valides, et elles seront invalides après la sortie. L'utilisation de new pour allouer de la mémoire n'a aucun effet. Je manque de temps et je n'ai pas le temps d'apprendre JS, donc je n'ai pas honte de le faire. demander segmentfault>3<

typechotypecho2687 Il y a quelques jours868

répondre à tous(3)je répondrai

  • phpcn_u1582

    phpcn_u15822017-07-05 11:01:29

    用ajax async:false但是问题依旧? Postez le code et jetez un œil. Selon le bon sens, ça devrait aller.
    Autres méthodes
    1 : Les valeurs asynchrones et la logique liée aux valeurs asynchrones peuvent être traitées dans la logique de promesse d'alors.
    2 : Utilisez le générateur et l'écriture de synchronisation de rendement pour traiter votre logique
    3 : Vous pouvez également utiliser directement la fonction asynchrone.

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-05 11:01:29

    Votre méthode d'attribution de code est correcte. Le soi-disant [invalide après la sortie] peut être un problème de flux de contrôle comme celui-ci :

    var x = 0
    setTimeout(() => {
      // 这里 x 是 1
      x = 1
    }, 1000)
    
    // 这里 x 还是 0
    console.log(x)

    La variable gc.getLocation 如果和上面的示例一样,是一个异步调用,那么就不能按照代码书写顺序来保证代码执行顺序了。因此如果直接在后续的代码中访问 outer dans votre code est susceptible d'obtenir l'ancienne valeur avant la fin de l'appel asynchrone.

    répondre
    0
  • 阿神

    阿神2017-07-05 11:01:29

    Vous pouvez maintenant définir une variable externe à l'extérieur, comme le type d'objet, puis la transmettre en tant que paramètre en attribuant une valeur à l'objet en interne, vous pouvez transférer la valeur vers l'extérieur

    .

    répondre
    0
  • Annulerrépondre