Javascript 从API获取数据时同步实时更新
我正在开发的fire data应用程序每秒都会更新一次,我之前所做的一切都很好,但现在我遇到了一个问题 基本上,当我完成从API获取整个数据时,我就开始监听SSE服务器发送的事件,这会导致我刚获取的数据与get运行时接收到的更新之间的不同步 ajax调用开始时的持续时间大约为20到30秒,在这段时间内,我错过了一些更新 如果我一加载应用程序就开始监听SSE,那么问题是如果我收到更新,但我的集合中仍然没有该对象,那么无论如何更新都会丢失 我在整个应用程序中使用Angular,代码一开始看起来非常类似:Javascript 从API获取数据时同步实时更新,javascript,angularjs,Javascript,Angularjs,我正在开发的fire data应用程序每秒都会更新一次,我之前所做的一切都很好,但现在我遇到了一个问题 基本上,当我完成从API获取整个数据时,我就开始监听SSE服务器发送的事件,这会导致我刚获取的数据与get运行时接收到的更新之间的不同步 ajax调用开始时的持续时间大约为20到30秒,在这段时间内,我错过了一些更新 如果我一加载应用程序就开始监听SSE,那么问题是如果我收到更新,但我的集合中仍然没有该对象,那么无论如何更新都会丢失 我在整个应用程序中使用Angular,代码一开始看起来非常类
var source = new EventSource('/updates');
$scope.items_01 = [];
$scope.items_02 = [];
$q.all([
getList(first, [], 0),
getList(second, [], 0)
])
.then(function (data) {
$scope.items_01 = data[0];
$scope.items_02 = data[1];
startStreaming();
});
function startStreaming() {
source.addEventListener('items_01', handleItems01Callback, false);
source.addEventListener('items_02', handleItems02Callback, false);
}
我如何使我得到的数据与我得到的更新保持同步,有什么想法吗?立即开始收听SSE并缓冲传入的更新。获得完整快照后,开始应用更新
我想到的潜在问题是,某些更新可能已经应用于快照。您需要一些额外的信息来了解这一点,这样您就可以跳过这些更新。我按照您的建议进行了操作,看起来效果不错。谢谢