2016-06-28 8 views
0

2つのjavascript関数を使用してKinveyのデータベースからデータを取得します。最初の関数を実行し、次の呼び出しで実行前に2秒待ちます。 私の誤差がある:私は私が手にsetTimeoutを使う毎回express node.jsでsetTimeoutはどのようにすることができますか?

TypeError: first._onTimeout is not a function 
    at Timer.listOnTimeout (timers.js:92:15) 

私のコードはこれです:

router.post('/datacol/getuserdata', (req, res) => { 
    request(
    { 
     url: kinveyurl + 'getPrivacyLevel', 
     method: 'POST', 
     json: { 
     "user_id" : req.body.user, 
     "sensors" : parseInt(req.body.sensor), 
     "contexts": parseInt(req.body.context), 
     "day_no" : parseInt(req.body.day), 
     "data_collectors": parseInt(req.user.type) 
     }, 
     auth: { 
     user: config.kinvey.appKey, 
     pass: config.kinvey.masterSecret, 
     sendImmediately: true 
     } 
    }, (err, resp, bod) => { 
    if(err) console.error(err) 
    console.log("User " + req.body.user + " Summarization Level = " + bod.summarization_level) 

    // This here should execute after 2 seconds!!! 
    // I try to set the timeout here!! 
    setTimeout(request(
     { 
     url: kinveyurl + 'getAccelerometerData', 
     method: 'POST', 
     json: { 
      "user_id" : req.body.user, 
      "summarization_level": parseInt(bod.summarization_level), 
      "day_no" : parseInt(req.body.day) 
     }, 
     auth: { 
      user: config.kinvey.appKey, 
      pass: config.kinvey.masterSecret, 
      sendImmediately: true 
     } 
     }, (err, resp, sensorData) => { 
     if(err) console.error(err) 
     console.log(sensorData) 
     res.render('datacolaccelerometer', { user : req.user, sensordata: sensorData }) 
    }),3000); 
    }) 
}) 

私が表現する新しいですし、私はどこ配置するかわかりません。 要するに、setTimeoutをどこに置くべきかを知りたいので、2回目の呼び出しをjavascript関数に2秒遅らせることができます。ありがとうございます!

+0

であなたの 'request'呼び出しをラップ機能。 'setTimeout(function(){//ここにあなたのコード}、3000);' –

+0

私のコードを使って表示できますか? – LoveMeow

+0

私はそれが答えとしてそれを追加していない理由は本当の問題だとはよく分かりません。私が意味していたのは、上記のコメントで述べたように 'function(){//ここにリクエストコードを貼り付けてください}'の中に 'request(){//残りのコード}'を移動させることです。 –

答えて

-1

これはsetTimeoutメソッドを(使用する正しい方法です)だから、here

setTimeout(yourCallbackFunctionHere, 3000); 

を文書化して、あなたのケースでの使用には、このようにそれを使用する必要があります。

setTimeout(function(){ 
    //your express code here 
}, 3000); 
関連する問題