【问题标题】:Synchronous XMLHttpRequest Strophe.js同步 XMLHttpRequest Strophe.js
【发布时间】:2021-02-08 12:16:24
【问题描述】:

我正在使用 Strophe.js(基于 JS 的 Xmpp 库)。问题是我需要建立同步连接,以便我收到的响应顺序正确。但是当我使用同步连接时,页面有点卡住了。即使右键打开控制台也需要几分钟。

我在页面上收到此警告。

[弃用] 主线程上的同步 XMLHttpRequest 是 不推荐使用,因为它对最终用户的有害影响 经验。如需更多帮助,请查看https://xhr.spec.whatwg.org/

请帮忙!

【问题讨论】:

    标签: javascript xmlhttprequest xmpp strophe.js


    【解决方案1】:

    警告只是告诉您,出于某种原因,最好使用异步调用。

    同步调用将阻塞您的其余代码,直到收到响应为止。不知何故,您的同步调用需要很长时间才能返回。

    如果不查看您的代码,很难说出原因,但您可以尝试通过在浏览器中输入资源的 URL 来检索您尝试获取的资源,然后查看需要多长时间才能获得响应,或者您是否收到完全响应,如果您发现任何错误。

    如果资源无法检索或访问缓慢,您就知道问题出在哪里以及在哪里解决。

    有一些方法可以按正确的顺序获取 XMLHttpRequest 结果:

    • 使用同步调用并尝试确保服务器响应足够快;
    • 使用异步调用,在前一个成功返回后开始下一个调用(所以在上一个的回调中开始下一个请求);
    • 使用异步调用,存储请求号,将响应存储在临时数组中,直到所有调用都返回,然后对它们进行排序;
    • 我不知道一些时髦和现代的方式,但 Google 可能知道。

    【讨论】:

    • @ocrudu 感谢您的回复,让我更深入地告诉您我面临的问题。我有一个为我提供事件的 xmpp 订阅,我处理这些事件并执行我的所有任务(UI 管理 + Api 调用)。我需要以正确的顺序排列这些事件的顺序才能正常运行。但是由于异步,一些事件在另一个之后发生,反之亦然。这扰乱了我的实现,因此我需要一种方法来同步事件(正确的顺序)。如果您能在这方面提供帮助,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2017-06-01
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多