たけるのプログラミング

作ったものとか、気ままにアップします。

【JavaScript】Promiseのthenメソッドの挙動について ちょっとした確認

この記事はJavaScript経験浅く、Promise勉強したての人が書いています。
間違い等ございましたら、指摘やアドバイス等いただけると嬉しいです。


thenメソッドはPromiseオブジェクトを返す。

なのでチェーンすることが可能です。

例えばサーバーからfetchメソッドを使ってjson形式のデータを取得してみる

fetch('https://jsonplaceholder.typicode.com/users')
.then(function(response){
    return response.json();
})
.then(function(json){
    console.log(json);
});

まずこのコードをconsole.logで出力すると以下のようになる。

fetch('https://jsonplaceholder.typicode.com/users')

Promiseオブジェクトを返している。そのため後にthenメソッドを続けることができる。
またPromiseResultの値がResponseオブジェクトになっている。

次にこのコードの戻り値をconsole.logで出力すると以下のようになる。

.then(function(response){
    return response.json();
})

thenメソッドの引数にコールバック関数を使用しており、そのコールバック関数の引数であるresponseに①のPromiseResultの値が格納されている。

上記でも書いたようにthenメソッドはPromiseを返す。注目するべき点はコールバック関数内でreturnした値(response.json)がPromiseResultの値となっていること。
つまり①→②のようにPromiseResultの値を 後に続くthenメソッドのコールバック関数の引数の値として利用することができる。

補足

例えばthenのコールバック関数の戻り値にPromiseを指定したらどうなるのか試してみた。

console.log(
    fetch('https://jsonplaceholder.typicode.com/users')
    .then(function(response){
    //return response.json();
    return Promise.resolve(100);
})
);