进行异步服务调用的最轻量级方法是什么?我的经理默认不想使用jquery,因为它在80k时相当大。异步调用必须在ie8内工作。这在简单的js中有多难?或者是否有一个jquery的子集或一些其他经过验证的小型专用js lib,它们非常适合我正在寻找的东西?
答案 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);
}
}
答案 3 :(得分:0)
有许多专门用于XHR功能的JavaScript微库,但如果您习惯使用jQuery并喜欢它,您可以简单地创建自己的构建并排除您不需要的其他模块(这当然会减少)其规模相当大):
https://github.com/jquery/jquery#modules
此外,您可以使用此站点构建自己的自定义版本:
http://projects.jga.me/jquery-builder/
Gzipped的结果大概是17Kb。