封装异步请求
Encapsulating Asynchronous Requests
我正在尝试创建一个小的javascript框架,可以使它更容易处理第三方库。这个库主要是异步的,因此,例如,要建立连接,您可以使用以下代码:
var com = establishConnection("api-key");
com.onsuccess = function(c) {
c.submit("something");
};
我想要的是能够使用我的包装器框架来简单地执行
var com = establishConnection("api-key");
com.submit("something");
显然,尽管我需要一种方法来处理原始库的异步特性,所以它将等到连接建立后再执行命令。我知道我可以做一些事情,比如设置一个标志来表示连接是否建立然后使用某种循环延迟,例如
function submit(msg) {
while (!connectionEstablished) {}
// do submit stuff
}
但是它看起来像一个丑陋的hack,有没有人有更好的方法来做到这一点的建议?
这是将异步请求转换为同步请求的唯一方法。
是的,它看起来很可怕,很丑;因为它是。
我知道我不知道你的库的全部输入和输出,但我建议你(和你的用户)应该接受异步请求,而不是试图屏蔽它们。HTTP请求在JavaScript中是异步的是有原因的;它们不会锁定浏览器。同步请求在请求期间完全锁定浏览器。如果你不小心,如果HTTP请求太长,你的用户会在大多数浏览器上得到一个警告,告诉他们脚本已经停止执行;并为他们提供禁用脚本的选项。相关文章:
- 如何使用异步模块的请求
- Node.js cors请求-异步示例不起作用
- 如果需要登录,Angularjs$http拦截器会暂停异步请求
- 使用异步模块的Express + Mongoose请求处理程序的更简洁的方法
- 将 jQuery UI 日期选择器与异步 AJAX 请求一起使用
- Angularjs的异步API请求
- NodeJS无法异步发出GET请求
- RxJS异步请求更新
- 异步HTTP(ajax)请求在脚本标记中有效,但在js文件中无效
- Node js中间件,用于向mongo发出异步请求
- AJAX-如何在不冻结浏览器的情况下逐个发出异步请求
- 从CORS请求中捕获异步异常
- 如何等待异步请求完成
- 异步xml请求不会;t返回
- 在继续之前,请确保异步GET/POST请求已完成
- 如何像Ember.js那样抽象ajax请求的异步行为
- 异步http请求服务
- 为什么Chrome似乎异步请求Javascript文件
- 使用异步请求多个网址
- 如何使 AJAX 请求异步