質問: function(uri){ return rp({ uri: uri, transform2xxOnly: true, transform: function(body){ return JSON.parse(body); } }); } getRequest(リクエストを投げるURI) .then(function(json){ console.log(json.html); // コンソールには表示される return json.html; // 値が返らない(ブラウザに表示されない) }) .catch(function(err){ console.log(err); }); } ``` ### 試したこと リクエストを投げる前に`return 'hoge';`すると意図通りになります。後だとうまくいきません。
回答: hexo側で、`Promise`で来たものを受け止める機構を持っているようです。`hexo.extend.tag.register`の第3引数で、`{async: true}`を渡しましょう(リファレンス)。 なお、受け取る側で`Promise`を処理できる今回の例のような場合はなんとかなりますが、一般には**リクエストが終わる前に関数を抜けてしまう**ので、「リクエストの結果を関数の戻り値にする」事はできません。