dポイントプレゼントキャンペーン実施中!

fetchでreturnで戻り値

fetchでreturnで戻り値を習得する方法を教えて下さい
returnで戻り値を習得しないfetchは使えるようになってきたのですが
fetchでreturnで戻り値を習得できません。
いろいろ調べたのですがよくわかりません。

### js
function getFetch() {
    const m = "POST";
    const h = { 'Accept' : 'application/json' };
    const b = new FormData();
    fetch( 'http://localhost/control.php' , { m , h , b } )
    .then(response => response.json())
    .then(rss => { console.log(rss); });
}


### control.php
header('Content-Type: application/json');
$array['data'] = 'data sample' ;
$array['message'] = 'done' ;
echo json_encode(compact('array'));
exit;

このようなソースを使っています。


### js
fetch( 'http://localhost/control.php' , { m , h , b } )
.then(response => response.json())
.then(rss => { console.log(rss); });

これを下記のように

### js
fetch( 'http://localhost/control.php' , { m , h , b } )
.then(response => response.json())
.then(rss => { console.log(rss); return rss ; });

return rss ;を付ける。

関数の呼び出しを

### js
getFetch();

これを下記のように

### js
var ret = getFetch();

戻り値を取れるようにしたいのです。

A 回答 (1件)

こんばんは



よくわかってはいませんが・・

then()メソッドの戻り値はpromiseなので、通常のメソッドのように
 var ret = (function(){ return hoge })()
みたいなわけにはいかないと思われます。
retに代入したければ、thenの処理の中で代入するしかないのではないでしょうか?

ただし、代入が実行されるタイミングが不明なので、そのまま次のセンテンスでretを参照するわけにもいかないはずと思われます。
結局、promiseのチェーンの中に処理全体を組み込むことになるのではないでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!