我在HTML网页中使用以下代码:
var request = new XMLHttpRequest();
var url= "my azure httptrigger";
request.open('GET', url, true);
request.onload = function () {
// Begin accessing JSON data here
var data = this.response;
if (request.status >= 200 && request.status < 400) {
document.getElementById('results').innerHTML = data;
function2();
} else {
console.log('error');
}
}
request.send();
在我的API(Azure函数中的httptrigger)中,我使用:
context.res = {
body: bodyStuff,
headers: {
'Content-Type': 'text/html; charset=utf-8'
}
}
确定要从API发回的数据。这意味着当我结束Azure功能时 - 在body
中context.res
发送的数据将被发送到我的网页并显示。
这很好,按计划工作。但是,我正在寻找的是能够将数据分成两部分。
(我试图定义context.res
两次,但这不起作用,因为第二个定义覆盖了第一个)
有没有有效的方法来做到这一点?
本质上,用户点击我的API,我希望通过函数中途从API发送部分数据到网页,然后在结尾处发送更多数据。这是为了使网页上的用户体验比等待所有数据加载/功能完成更快。
你想要做的是用azure函数做不到的事情。
看起来你想要在不划分逻辑的情况下划分有效负载,这对HTTP协议不起作用。
该协议意味着1个请求,1个答案。这意味着您需要选择不同的协议才能实现此目的。
您可以选择使用套接字,使用可流式传输数据或其他方法,但是一旦触发了HTTP请求,就无法将数据附加到HTTP请求中。
而azure函数是在HTTP之上的实现,这就是为什么context.res
被覆盖,因为你只能回答一件事。
你能做的就是拨打几个电话,而不是长电话。并尝试将“快速”逻辑与“慢”逻辑分开,以便您可以更快地加载元素。