首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >封装异步请求

封装异步请求
EN

Stack Overflow用户
提问于 2011-11-16 18:03:49
回答 1查看 70关注 0票数 0

我正在尝试创建一个小的javascript框架,使其在处理第三方库时变得更容易。这个库主要是异步的,因此,例如,要建立连接,您可以使用以下代码:

代码语言:javascript
复制
var com = establishConnection("api-key");
com.onsuccess = function(c) {
    c.submit("something");
};

我想要的是能够使用我的包装器框架来简单地执行以下操作

代码语言:javascript
复制
var com = establishConnection("api-key");
com.submit("something");

显然,我需要一种方法来处理原始库的异步特性,因此它将等待连接建立后再执行命令。我知道我可以做一些事情,比如设置一个标志来表明连接是否已建立,然后使用某种循环延迟,即

代码语言:javascript
复制
function submit(msg) {
    while (!connectionEstablished) {}
    // do submit stuff
}

但这看起来像是一个丑陋的黑客,有没有人有更好的建议来做这件事呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-16 18:08:45

这将是将异步请求转换为同步请求的唯一方法。

是的,它看起来很可怕,也很丑陋;因为它是,所以才是

我知道我不知道你的库的全部输入和输出,但我建议你(和你的用户)应该接受异步请求,而不是试图掩盖它们。HTTP请求在JavaScript中是异步的,这是有原因的;它们不会锁定浏览器。在请求期间,同步请求会完全锁定浏览器。如果您不小心,如果HTTP请求太长,您的用户将在大多数浏览器上收到警告,告诉他们脚本已停止执行;并为他们提供禁用脚本的选项。

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

https://stackoverflow.com/questions/8149786

复制
相关文章

相似问题

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