jquery - 如何使用延迟对象从一个 api 调用获取数据到另一个?
问题描述
我必须进行两次 api 调用——租户和用户。租户 api 返回所有现有租户的详细信息,用户 api 将返回特定租户中的所有用户。在第一次函数调用之后,我需要将租户 ID 与他们的详细信息进行映射。我必须将这些键值用作第二个 api 调用的参数(它采用租户 ID(整数))。在第二个 api 调用完成后,我必须为用户创建另一个映射,其中租户 ID 作为键,用户详细信息作为值。
var tenants = {};
var users = {};
function func1() {
$.ajax({
dataType: 'json',
url: crudUrl("tenants"),
success: function (response) {
response.forEach(function (item) {
var TTId = item.Id.toString();
if (!("key" in tenants)) {
tenants[TTId] = item;
}
})
}
});
}
function func2(key) {
return $.ajax({
dataType: 'json',
url: crudUrl("tenants/{tenantId}/users"),
data: {
tenantId: key
},
success: function (response) {
var detail = [];
var TTId = key;
response.forEach(function (item) {
var uid = {}
uid.Id = item.Id;
uid.Name = item.Name;
detail.push(uid);
})
users[TTId] = detail;
}
});
}
$.when(func1()).then(function () {
for (var key of Object.keys(tenants)) {
func2(parseInt(key));
}
});
上述方法有效,但网络负载过重,因为它必须在 func2 中为从 func1 获得的每个键进行多次 ajax 调用。我很确定这也可以使用延迟对象来完成,但我不知道如何使用它。我是新手,所以任何帮助将不胜感激。
解决方案
推荐阅读
- pine-script - 如何在 Pine Editor 中编写多时间框架代码?
- css - vuetifyjs网格列的全高并在溢出时滚动
- web - 可以通过单击导航栏上的通知图标打开的框的 aria-role 应该是什么?
- javascript - ReactJS - 异步调用中的响应
- python - Python 3 中“类型”类的实现
- python - DataFrame 每一行在一秒钟内的最大变化
- c++ - 我如何读取文件直到 C++ 中的特定行
- powershell - 循环遍历 Powershell 中的个人 ID
- python-3.x - 您好,这是我第一次使用 sqlalchemy,我创建了一个函数来在单独的表中加载多个数据框
- python - Plotly:如何防止旭日形图案的最外圈颜色变浅?