0
我使用2個javascript函數從Kinvey中的數據庫中獲取數據。我想要執行第一個函數,並且下一個調用需要等待2秒才能執行。每次我使用的setTimeout我得到: 我的錯誤是:如何在express node.js中設置TimeTimeout?
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秒,謝謝!
包裝你'request'調用一個函數。 'setTimeout(function(){// your code here},3000);' –
你可以使用我的代碼來顯示它嗎? – LoveMeow
我不是很確定這是真正的問題,所以不要將它作爲答案添加。我的意思是,如上面評論中提到的,將'request(){//其餘代碼}'移到'function(){//將請求代碼粘貼到這裏}調用中。 –