什么是在js中进行异步服务调用的最轻量级方法?

时间:2016-07-25 21:00:44

标签: javascript jquery web-services

进行异步服务调用的最轻量级方法是什么?我的经理默认不想使用jquery,因为它在80k时相当大。异步调用必须在ie8内工作。这在简单的js中有多难?或者是否有一个jquery的子集或一些其他经过验证的小型专用js lib,它们非常适合我正在寻找的东西?

4 个答案:

答案 0 :(得分:1)

这很简单。您可以在此处使用此示例代码,但请注意。它不规模!异步编程变得非常复杂,非常快。如果您有两个或三个混合的异步调用(干扰服务器上的数据级别),您最好三思而后行。

您可能希望在客户端上具有异步作业队列,以便调用仍然是异步的,但是按顺序执行。这最好用承诺来完成。

这是一个AJAX调用示例:

function send(data, callback)
{
  var xhr;

  xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhttp.status === 200)
    {
        callback(xhr.responseText);
    }
  };

  xhr.open("GET", "http://..../route/to/your/service/port", true);
  xhr.send();
}

通过传递回调函数来使用它,如下所示:

send({ "hello": "world" }, function (response) {
  document.getElementById("response").innerText = response;
});

答案 1 :(得分:0)

我在这种情况下使用tinyxhr,试一试(我不是作者!)

答案 2 :(得分:0)

如此简单的普通javascript get请求呢?

private void outLookApp_NewMailEx(string EntryIDCollection)
    {
        olNameSpace = this.Application.GetNamespace("MAPI");
        try
        {
            //THIS part is failing \/ and returning nothing
            object item = olNameSpace.GetItemFromID(EntryIDCollection, Type.Missing);

            Outlook.MailItem mailItem = item as Outlook.MailItem;



            if (mailItem != null)
            {
                mailItem.Display();
            }
        }
        catch (Exception e)
        {
            MessageBox.Show("" + e);
        }
    }

来源:http://youmightnotneedjquery.com/#request

答案 3 :(得分:0)

有许多专门用于XHR功能的JavaScript微库,但如果您习惯使用jQuery并喜欢它,您可以简单地创建自己的构建并排除您不需要的其他模块(这当然会减少)其规模相当大):

https://github.com/jquery/jquery#modules

此外,您可以使用此站点构建自己的自定义版本:

http://projects.jga.me/jquery-builder/

Gzipped的结果大概是17Kb。