封装异步请求

时间:2011-11-16 10:03:49

标签: javascript asynchronous

我正在尝试创建一个小的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
}

但它看起来像是一个丑陋的黑客,有没有人有更好的方法来做这个?

1 个答案:

答案 0 :(得分:0)

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

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

我知道我不知道您图书馆的完整内容,但我建议您(和您的用户)拥抱异步请求而不是尝试掩码