でfetchの使い方:私は「[オブジェクトのオブジェクト]を返している私は非同期でフェッチして待っています使用して、このパブリックAPIを取得しようとしているが、フェッチ方法だ非同期/リターンを待つ[オブジェクトのオブジェクト]
クラスAPIを取得するために使用してmは:APIが返す
class FetchAnimalApi {
async getAnimalInfo(animal) {
const request = await fetch(`http://my_api_url.com/${animal}`);
const response = await request.json();
return `${animal} goes like ${response.sound}`;
}
}
構造(動物がブタである場合):
{"color": "pink", "sound": "roinc"}
私は別のファイルに私のクラスをインポートして、それを呼んでいるが:
const animals = new FetchAnimalApi();
console.log(animals.getAnimalInfo('pig'));
私は間違っていますか?
EDIT:
が今私にconsole.log()私が印刷したい正確に何を示しているが、私は応答を返すとき、私はまだ、[オブジェクトのオブジェクト]を取得しています:
function getInfo() {
const animals = new FetchAnimalApi();
return animals.getAnimalInfo('pig').then(result => result);
}
ながらデバッグすると、const request = await fetch(
http://my_api_url.com/ $ {animal} )
行が実行された直後に[オブジェクトオブジェクト]が画面に表示されていることがわかりました。
'[オブジェクトのオブジェクト]を'という理由だけで、あなたの最終的な出力で文字列変換である可能性があります。出力を 'console.log()'すると、目的のオブジェクトが表示されます。テンプレートリテラルにオブジェクトを入れてプロパティを出力することはできません。また、 'getAnimailInfo()'は約束を返します。ですから、その約束から価値を得るためには、 'await'と' .then() 'のどちらかを使う必要があります。 – jfriend00
@ jfriend00 _オブジェクトをテンプレートリテラルに入れて、プロパティを出力することはできません?どうしてそう思うの? – alexmac
@alexmac:テンプレートリテラルは "引数"を文字列に変換するので、オブジェクトのデフォルトの文字列表現は '[object Object]'です。すなわち、プロパティのリストではありません。 –