我对EventSource
有一些问题。我可以轻松获取数据,例如我可以将数据写入控制台。但是,我希望从此函数返回此数据。它没有返回,因为有一些延迟,它返回undefined。
function fetchData(date,lang) {
var source = new EventSource(*URL*.php?sse=y&lang=" + lang + "&date=" + date);
source.addEventListener('message', function (e) {
return e;
}, false);
}
我该怎么做?
答案 0 :(得分:0)
如果是一次性的数据请求,那么使用EventSource
是错误的工具。 EventSource / SSE将在客户端(您的浏览器)在服务器上可用时发送消息。数据消息将以异步方式通过,因为没有其他任何意义。
您可以将您的事件监听器包装在您的fetchData()
返回的承诺中,并在每次收到消息时让它解决承诺。我不确定收到第二条消息后会发生什么。
如果它只是一次性请求,那么您应该使用AJAX请求。同样,这是异步的。有some suggestions to make that behave as if it is synchronous here,但是,正如他们在那里强调的那样,你应该尝试调整你的代码以适应它的异步性质。