首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX和autobahnjs

AJAX和autobahnjs
EN

Stack Overflow用户
提问于 2013-12-11 03:28:31
回答 1查看 120关注 0票数 0

我正在显示web浏览器中的项目列表,该列表最初是通过服务器的AJAX调用请求的,然后通过侦听autobahnjs订阅(接收更改通知)进行更新。

我的一些项目(工作列表,有时在几百毫秒内完成,有时只是在很长时间后才完成),可能会在网页加载时更新。这很有可能,因为作业列表是在提交新职务后立即显示的。

我的问题是,我不知道订阅什么时候是活动的,所以有时在收到AJAX响应之后,在订阅变为活动之前(这会导致项目从未看到更新),对项目列表的更改就会发生。

在AJAX调用之前启动订阅只会部分解决问题,因为现在项目列表可以覆盖先前通过订阅发生的更改。这样做还需要找出订阅何时处于活动状态。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-11 09:59:01

在基于高速公路的堆栈(单个服务器节点)同时运行RPC和PubSub的湿法时,有一个选项如下:

代码语言:javascript
复制
var listInitialized = false;

session.subscribe("http://myapp.com/onListChange",
   function (topic, event) {
      if (listInitialized) {
         // update list
      }
   }
});

session.call("http://myapp.com/getList").then(
   function (res) {
      // initial fill of list
      listInitialized = true;
   }
);

由于subscribecall都运行在单个WAMP连接上(而且该连接是有序的WebSocket/call传输),所以Autobahn服务器将在调用处理之前设置订阅和传递事件。该订阅可能会产生在调用返回之前到达的事件,但通过标志忽略这些事件。稍后,当调用返回和结果被处理时,随后的事件由客户端处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20509965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档