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<
用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.
Kaedah penetapan kod anda betul yang dipanggil [tidak sah selepas keluar] mungkin merupakan masalah aliran kawalan seperti ini:
Pembolehubah
gc.getLocation
如果和上面的示例一样,是一个异步调用,那么就不能按照代码书写顺序来保证代码执行顺序了。因此如果直接在后续的代码中访问outer
dalam kod anda berkemungkinan mendapat nilai lama sebelum panggilan tak segerak selesai.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