Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimana untuk menghantar parameter penutupan panggil balik kepada pembolehubah persekitaran luaran dalam JS

Seperti dalam soalan, bagaimana untuk menghantar data parameter formal dalam penutupan kepada pembolehubah luaran

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

Menggunakan tugasan hanya boleh memastikan bahawa data dalam penutupan adalah sah, dan ia akan menjadi tidak sah selepas keluar daripada menggunakan baru untuk memperuntukkan memori Saya kesuntukan masa dan tidak mempunyai masa untuk belajar JS, jadi saya tidak tahu malu tanya segmentfault>3<

typechotypecho2637 hari yang lalu830

membalas semua(3)saya akan balas

  • phpcn_u1582

    phpcn_u15822017-07-05 11:01:29

    用ajax async:false但是问题依旧? Siarkan kod dan lihat mengikut akal fikiran, ia sepatutnya OK.
    Kaedah lain
    1: Nilai tak segerak dan logik yang berkaitan dengan nilai tak segerak boleh diproses dalam logik janji ketika itu.
    2: Gunakan penulisan penyegerakan penjana dan hasil untuk memproses logik anda
    3: Anda juga boleh menggunakan fungsi async secara langsung.

    balas
    0
  • 淡淡烟草味

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

    Kaedah penetapan kod anda betul yang dipanggil [tidak sah selepas keluar] mungkin merupakan masalah aliran kawalan seperti ini:

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

    Pembolehubah gc.getLocation 如果和上面的示例一样,是一个异步调用,那么就不能按照代码书写顺序来保证代码执行顺序了。因此如果直接在后续的代码中访问 outer dalam kod anda berkemungkinan mendapat nilai lama sebelum panggilan tak segerak selesai.

    balas
    0
  • 阿神

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

    Anda kini boleh mentakrifkan pembolehubah luaran di luar, seperti jenis Objek, dan kemudian menyerahkannya sebagai parameter Dengan memberikan nilai kepada Objek secara dalaman, nilai boleh dipindahkan ke luar

    balas
    0
  • Batalbalas