2017-02-02 14 views
1

リクエストにfetch APIを使用してサーバー上のデータを取得しようとしていますが、リクエストがFOREVERを処理しています(最終的に処理します)。 Reactをビューとして使用していて、Expressがページを表示しています。私はExpressとJSXのコードを以下に挙げました。なぜこれが起こっているのかについての洞察(「マウントされた」メッセージは、期待どおりに直ちにログに記録されますが、遅延後にAPIをフェッチします)?Fetch API Delay

エクスプレス:

app.use('/test',function(){ 
      console.log('connected'); 
    }) 

React.JS:それ以外のエンドポイントではないでしょう...

app.use('/test',function(request, response){ 
      console.log('connected'); 
      response.send(); //!!!!! this line 
     //Or: response.sendStatus(200); to send status code without body 

    }); 

componentDidMount(){ 
     console.log('mounted'); 
     fetch('./test').then(function(response){ 
      console.log(response); 
     }).catch(function(error){ 
      console.log(error); 
     }) 
    } 
+0

ブラウザの開発者ツールでネットワークリクエストを確認しましたか?それはリクエストが遅いのか、間違った方法で結果を処理するのかを教えてくれます。 –

+0

あなたはサーバからの応答を送信していないので、ブラウザは待機して待機し、最後にタイムアウトします。 'res.send(" hello ")'やそのような応答をすると、ブラウザーは非常に高速になります。 – jfriend00

答えて

4

あなたは、サーバー側の応答を送信する必要があります終了させる。

+0

私のエラーをキャッチするためにありがとう。それはいつもあなたがハングアップする些細なものです。 –