2017-05-10 27 views
0

我仍然在學習javascript,特別是nodejs,我想從節點地理編碼的資源中獲取城市的數據。這裏是我的代碼:獲取來自節點地理編碼的資源數據

const 
    nodeGeocoder = require('node-geocoder'); 

const 
    tes = require('./tes'); 

let 
    options = { 
     provider: 'google', 
     httpAdapter: 'https', 
     apiKey: myapi, 
     formatter: null 
    }; 

let geocoder = nodeGeocoder(options); 

geocoder.reverse({ 
    lat: tes.lat, 
    lon: tes.lon 
}) 
.then(res => { 
    return city = res[0].administrativeLevels.level1long; 
}) 
.catch(err => { 
    console.log(err); 
}) 

console.log(city); 
+0

你不能訪問外部城市,然後回調/承諾,你需要做的事情內功能 –

回答

0

無論是使用回調函數或裏面做的。後來的事情()承諾

const 
    nodeGeocoder = require('node-geocoder'); 

const 
    tes = require('./tes'); 

let 
    options = { 
     provider: 'google', 
     httpAdapter: 'https', 
     apiKey: myapi, 
     formatter: null 
    }; 

let geocoder = nodeGeocoder(options); 

geocoder.reverse({ 
    lat: tes.lat, 
    lon: tes.lon 
}) 
.then(res => { 
    city = res[0].administrativeLevels.level1long; 

    //do here whatever you want 

}) 
.catch(err => { 
    console.log(err); 
}) 

或做回調函數

function getCity(callback){ 

geocoder.reverse({ 
     lat: tes.lat, 
     lon: tes.lon 
    }) 
    .then(res => { 
     city = res[0].administrativeLevels.level1long; 
     callback(null, city); 

    }) 
    .catch(err => { 
     console.log(err); 
     callback(err); 
    }) 
} 

使用上述功能

getCity(function(err, city){ 
    if(err){ 
    console.log(err); 

    }else{ 
    console.log(city); 
    } 

}) 
+0

感謝您的答案, 以及如何導出城市,所以我可以使用另一個函數中的值? –

+0

使用函數getCity(callback){}並像上面那樣調用它 –