Heim  >  Fragen und Antworten  >  Hauptteil

javascript – So übergeben Sie Callback-Abschlussparameter an externe Umgebungsvariablen in JS

Wie in der Frage, wie man die formalen Parameterdaten im Abschluss an externe Variablen übergibt

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);
});

Die Verwendung von Zuweisungen kann nur sicherstellen, dass die Daten im Abschluss gültig sind. Die Verwendung von Neu zum Zuweisen von Speicher hat keine Auswirkung. Ich habe keine Zeit, JS zu lernen, daher bin ich schamlos ask segmentfault>3<

typechotypecho2638 Tage vor835

Antworte allen(3)Ich werde antworten

  • phpcn_u1582

    phpcn_u15822017-07-05 11:01:29

    用ajax async:false但是问题依旧? 你把代码贴出来看看,按照常理来说应该是可以的。
    其它的方法
    1:可以在promise的then逻辑中处理异步值以及和异步值有关的逻辑。
    2:用generator配合yield同步化书写的方式处理你的逻辑
    3:直接用async函数也可以。

    Antwort
    0
  • 淡淡烟草味

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

    你的代码赋值方式是正确的,所谓【退出后就无效】可能是这样的控制流问题:

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

    你的代码中 gc.getLocation 如果和上面的示例一样,是一个异步调用,那么就不能按照代码书写顺序来保证代码执行顺序了。因此如果直接在后续的代码中访问 outer 变量,很可能拿到的就是异步调用完成前的旧值。

    Antwort
    0
  • 阿神

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

    你可以现在外面定义个外部变量,比如Object类型,然后将其当做参数传进去,通过在内部对Object赋值,实现传值到外面

    Antwort
    0
  • StornierenAntwort