2017-04-14 12 views
1

私は現在ノードフェッチモジュールを使用してウェブサイトからJSONを取得しようとしていて、次の関数を行った:戻りノードフェッチプロミス{<pending>}代わりに、所望のデータ

var fetch = require("node-fetch"); 

function getJSON(URL) { 
    return fetch(URL) 
    .then(function(res) { 
     return res.json(); 
    }).then(function(json) { 
     //console.log(json) logs desired data 
     return json; 
    }); 
} 

console.log(getJson("http://api.somewebsite/some/destination")) //logs Promise { <pending> } 

これを印刷する場合コンソールには、私は単純にPromise { <pending> } を受け取っていますが、変数jsonを最後の.then関数からコマンドラインに出力すると、目的のJSONデータが得られます。同じデータを返す方法はありますか?

+2

'getJson( "...")、その後(にconsole.log);' – 4castle

答えて

1

A JavaScriptの約束が非同期である(これは私の一部にだけ誤解の問題である場合、私はJavascriptにかなり新しいですと、私は、事前に謝罪)。あなたの機能はそうではありません。

関数の戻り値を出力すると、すぐにプロミス(まだ保留中)が返されます。

例:。

var fetch = require("node-fetch"); 

// Demonstational purpose, the function here is redundant 
function getJSON(URL) { 
    return fetch(URL); 
} 

getJson("http://api.somewebsite/some/destination") 
.then(function(res) { 
    return res.json(); 
}).then(function(json) { 
    console.log('Success: ', json); 
}) 
.catch(function(error) { 
    console.log('Error: ', error); 
}); 
+0

はそれをクリアするためのありがとうございました。 – LegusX

関連する問題