2016-04-25 14 views
0

私はいつもフォーラムを検索していますが、私の問題は解決できません。私はいくつかのAPI要求を行うためにNodeJSとasync.waterfallを使用しています。 同じ構造が私には当てはまりますが、そこにはありません。Node.js "コールバックは既に呼び出されています"。しかし、他のコールバックはありません

async.waterfall([ 
     function (callback) { 
      callback(null, latitude, longitude, callback); 
     }, 
     getGeoNames, 
    ], 
    function (err, result) { 
     console.log("ok"); 
    }) 

、ここではエラー

function getGeoNames(latitude, longitude, callback) { 
    var countryKey = 'country'; 
    var stateKey = 'administrative_area_level_1'; 

    var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng="+latitude+","+longitude; 


    request({ 
     url: url, 
     json: true 
    }, function (error, response, body) { 

      var adresses = body.results[0].address_components; 
      var geo = {}; 
      for (var i = 0, len = adresses.length; i < len; i++) { 
       var adress = adresses[i]; 
       //console.log(adress); 
       if (adress.types[0] == countryKey) { 
        geo.country = adress.long_name; 
        if (geo.state !== undefined) break; 
       } 
       else if (adress.types[0] == stateKey) { 
        geo.state = adress.long_name; 
        if (geo.country !== undefined) break; 
       } 
      }; 
      return callback(null, geo); // ERROR HERE <----------------- 
    }) 
} 

機能の実行コールバックを要求することができます()関数を持つ関数getGeoNamesあるので、前runnedたのですか? "返信"なしで試しましたが、それは同じです。

 if (fn === null) throw new Error("Callback was already called."); 
         ^

Error: Callback was already called. at c:\Users\Serega\node_modules\async\dist\async.js:803:36 at Request._callback (c:\Users\Serega\WebstormProjects\untitled1\server.js:174:20) at Request.self.callback (c:\Users\Serega\node_modules\request\request.js:200:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request. (c:\Users\Serega\node_modules\request\request.js:1067:10) at emitOne (events.js:82:20) at Request.emit (events.js:169:7) at IncomingMessage. (c:\Users\Serega\node_modules\request\request.js:988:12) at emitNone (events.js:72:20)

Process finished with exit code 1

PS:その他のウォーターフォール機能は、私にリクエストして機能します。

ありがとうございました!

答えて

0

ここにエラーがあります。

callback(null, latitude, longitude, callback); 

引数としてコールバックを渡すべきではありません。

+0

Спасибоогромное - помогло:) –

関連する問題