2017-05-26 36 views
0

私はnode.jsを初めて使用しており、JSON配列のドキュメントを返すAPI(GET)を呼び出すコードを記述しました。 GETは正常に動作しますが、問題は関数内の結果にアクセスできますが、外部からはアクセスできないことです。関数内の最初の警告はJSONコンテンツを表示しますが、関数の外にある2番目の警告(結果)には未定義の値があります。呼び出されたときに関数がJSON結果を返さない

function getNames(){ 
     $.get("./api/myapi") 
      .done(function(data) { 
       if(data.length > 0) { 
       $('#databaseNames').html("Database contents: " + JSON.stringify(data)); 
       var mylist2 = JSON.stringify(data); 
       alert (mylist2); // This alert is fine 
       return (mylist2); 

       } 
      }); 
     } 

    var result = getNames() ; 
    alert (result); // Here I get "undefined". 

答えて

0

あなたは結果を使用するコールバック関数を使用する必要があります。 これは、コードの私の作品です。 JavaScriptは性質上非同期であるため、APIコールによってブロックされません。このようにコードを少し修正してください。

function getNames(cb){ 
     $.get("./api/myapi") 
      .done(function(data) { 
       if(data.length > 0) { 
       $('#databaseNames').html("Database contents: " + JSON.stringify(data)); 
       var mylist2 = JSON.stringify(data); 
       cb(mylist2); 
       } 
      }); 
     }; 

    getNames(function(res){ 
      alert(res); 
    //Other functions with the result // 
    }); 
+0

ご回答ありがとうございます。私は提案されたコードを試しましたが、関数getNamesは呼び出されません。何か案が? –

+0

遅れて申し訳ありません。私は少しミスをした。私はコードを修正しました。動作している場合はお知らせください。 –

関連する問題