2016-04-05 12 views
0

これは私がテストしているコードです。毎回応答を返しません。私はそれを20回走らせるように、体の出力を得ることができるのは1回だけです。他の時には、エラーメッセージが表示されなくても何も出力されませんでした。ノード要求は応答まで待ちません。コールバックを使用しても

私は、リクエストが速すぎて応答を返すことができないと思います。

誰でも私にこれを手伝ってもらえますか?おかげさまで

get_from_google : function (callback) { 
    request('http://www.google.com', function (error, response, body) { 
     if (!error && response.statusCode === 200) { 
      console.info('Success'); 
      callback(body); 
      //console.log(body); // Show the HTML for the Google homepage. 
     } else { 
      console.info('Failed'); 
      //console.log(body) 
     } 
     console.info('google request') 
    }).on('body',function (body) { 
     callback(body); 
    }) 
} 

以下のように、関数(err、response、body)内に出力を追加しました。しかし、何も出力されませんでした。

Starting selenium standalone server... 
[launcher] Running 1 instances of WebDriver 
Selenium standalone server started at http://10.33.203.210:53537/wd/hub 
Started 
. 


Ran 1 of 3 specs 
1 spec, 0 failures 
Finished in 0.019 seconds 
Shutting down selenium standalone server. 
[launcher] 0 instance(s) of WebDriver still running 
[launcher] chrome #01 passed 

Process finished with exit code 0 
+0

まあ、オムを、あなたは 'のために聞いている理由(私は理解していないelse文でコールバックを呼び出していません)。 '要求'とは何ですか - 要求モジュールですか? –

+0

はいnpm reqeust moduelを使用しています。 私がここに持っている問題は何もコールバックがありません。関数内のコード(エラー、レスポンス、ボディ)は実行されません。 – isian8814

+0

この特定の機能のテスト方法を正確に表示できますか?おそらく、完了したとしてテストをマークする前に、関数が完了するのを待っているのではないでしょうか? – mscdex

答えて

0

ここにいくつかの問題があります:

  1. 要求エラーは無視されている。ここ
    get_from_google : function (callback) { 
        request('http://www.google.com', function(err, res, body) { 
         console.info('In the callback'); 
         if (err) 
          return callback(err); 
         if (res.statusCode === 200) { 
          callback(new Error('Nothing got back'), body); 
         } else { 
          callback(new Error('Unexpected status code: ' + res.statusCode)); 
         } 
        }); 
    } 
    

    は、コンソールで出力されます。たとえば、サーバーへの接続に問題があると、エラーが発生することがあります。
  2. すでに他のコールバックがあるので、bodyイベントハンドラを追加する必要はありません。
  3. ノードスタイルのコールバックシグネチャ(err, result[, ...resultn])を使用することをお勧めします。心の中でこれらの事で

、あなたのような何かを試してみてください:

get_from_google: function(callback) { 
    request('http://www.google.com', function(err, res, body) { 
    if (err) 
     return callback(err); 
    if (res.statusCode === 200) { 
     callback(null, body); 
    } else { 
     callback(new Error('Unexpected status code: ' + res.statusCode)); 
    } 
    }); 
} 
+0

私はそれを試した しかし、私はまだ毎回返答を得ることができませんでした。 テストは0.019秒で完了しました。 リクエストを完了するには速すぎますか? 関数(err、res、body)内でbodyを出力しようとしています。しかし、私は何も出力していません。 – isian8814

関連する問題