2016-10-20 121 views
0

我對Node JS有點新,所以我從簡單的東西開始。天氣應用程序。但是我有一個問題,我現在正在尋找幾個小時,但找不到解決方案。所以這就是爲什麼我在這裏問。NodeJS回調函數不是函數

我的回調出現錯誤。 這是我的代碼:

var weather = (lat, long, callback) => { 

request({ 
    url: `https://api.darksky.net/forecast/79edcc21428e0d3076f214db1935daeb/${lat},${long}`, 
    json: true 

}, (error, response, body) => { 

    var fahrenheit = body.currently.temperature; 
    var celsius = Math.round(((fahrenheit-32)/1.8) * 10) /10; 

    console.log(fahrenheit); 
    console.log(celsius); 

    callback(celsius); 

}); 
}; 

我呼籲這裏的回調:

// stuff to get latitude and longtitude 
    weather(lat, long); 
    var test = celsius; 

該變量可能是錯誤的,但我得到的錯誤也離不開它。

我希望有人能幫助我,因爲我只是不知道如何解決它:(

對於那些誰希望看到完整的代碼: (我是荷蘭這樣的消息是荷蘭也一樣,但它沒有什麼特別的)

const request = require('request'); 

var weather = (lat, long, callback) => { 

    request({ 
     url: `https://api.darksky.net/forecast/79edcc21428e0d3076f214db1935daeb/${lat},${long}`, 
     json: true 

    }, (error, response, body) => { 

     var fahrenheit = body.currently.temperature; 
     var celsius = Math.round(((fahrenheit-32)/1.8) * 10) /10; 

     console.log(fahrenheit); 
     console.log(celsius); 

     callback(celsius); 

    }); 

}; 

var address = (address, callback1, celsius) => { 

    var address = encodeURIComponent(address); 

    request({ 
     url: `https://maps.googleapis.com/maps/api/geocode/json?address=${address}`, 
     json: true 
    }, (error, response, body) => { 
     if (error) { 

      callback1('Niet mogelijk om de Google servers te contacteren.'); 

     } else if(body.status === 'ZERO_RESULTS') { 

      callback1('Niet mogelijk om dat address te vinden.'); 

     } else if(body.status === 'OK') { 

      var lat = body.results[0].geometry.viewport.northeast.lat; 
      var long = body.results[0].geometry.viewport.northeast.lng; 

      weather(lat, long); 
      var test2 = celsius; 

      callback1(undefined, { 
       Test: `test: ${test2}`, 
       Address: body.results[0].formatted_address, 
      //  Lat: body.results[0].geometry.viewport.northeast.lat, 
      //  Long: body.results[0].geometry.viewport.northeast.lng 
      }); 

     } else { 
      callback1('Er is iets mis gegaan.'); 
     } 
    }); 

}; 

module.exports.address = address; 

編輯:奇怪的是,它並沒有在天氣變化工作,而它的地址變量工作...:'(

+1

看起來像你缺少第三個參數:'weather(lat,long,yourCallbackFunction);' – mika

回答

0
var weather = (lat, long, callback) => { 

聲明瞭三個參數

weather(lat, long); 

兩個調用。

要是你加入調試一行:

var weather = (lat, long, callback) => { 
    console.log('callback = ', callback); 

你可能已經看到了問題,那callback確實是不確定的。

+0

Ehmmm ...抱歉,但是,我沒有明白。你到底什麼意思?可能是因爲我很累...但我只是不知道 –

+0

我無法解釋它更好。你的功能是要求三個參數,你只給它兩個。 –