[英]I have to issue a second GET request to get the response I want
我第一次向该端点发送GET
请求时,响应为: allEvents = []
。 如果我等待几秒钟并再次点击端点,则会收到(期望的结果)填充的allEvents
数组。 因此,首次启动时它无法正常工作。
注意行console.log(I am inside the function)
。 仅在我第一次击中端点几秒钟后才出现。
如何确保在首次点击API端点时执行此功能?
var request = require('request');
var allEvents = [];
module.exports = function(req, res, next) {
console.log("INSIDE MODULE ___ BEFORE FUNCTION");
(function goToEB(){
request({
url: process.env.MY_OWNED_EVENTS,
method: 'GET'
}, function(error, response, body){
console.log("INSIDE FUNCTIONNNNNN");
if (error) {
return console.log(error);
} else {
var data = JSON.parse(response.body);
var events = data.events;
for (var i = 0; i < events.length; i++) {
var event = {
name: events[i].name.text,
description: events[i].description.text,
id: events[i].id,
url: events[i].url,
start: events[i].start.local,
end: events[i].end.local
}
if (!eventDoesExist(event, allEvents)) {
allEvents.push(event);
} else {
console.log("EVENT EXISTS");
}
};
return allEvents;
}
})
})();
function eventDoesExist(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i] === obj) {
return true;
}
}
return false;
}
res.send(allEvents);
}
在第二个请求返回任何数据并填充allEvents
之前,您正在发送响应。 移动
res.send(allEvents);
像这样进入您的请求的回调:
...
for (var i = 0; i < events.length; i++) {
var event = {
name: events[i].name.text,
description: events[i].description.text,
id: events[i].id,
url: events[i].url,
start: events[i].start.local,
end: events[i].end.local
}
if (!eventDoesExist(event, allEvents)) {
allEvents.push(event);
} else {
console.log("EVENT EXISTS");
}
};
res.send(allEvents);
....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.