同步使用Event Source获取数据

时间:2018-04-04 19:11:35

标签: javascript addeventlistener server-sent-events eventsource

我对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);
}

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果是一次性的数据请求,那么使用EventSource是错误的工具。 EventSource / SSE将在客户端(您的浏览器)在服务器上可用时发送消息。数据消息将以异步方式通过,因为没有其他任何意义。

可以将您的事件监听器包装在您的fetchData()返回的承诺中,并在每次收到消息时让它解决承诺。我不确定收到第二条消息后会发生什么。

如果它只是一次性请求,那么您应该使用AJAX请求。同样,这是异步的。有some suggestions to make that behave as if it is synchronous here,但是,正如他们在那里强调的那样,你应该尝试调整你的代码以适应它的异步性质。