在 $.when 块中动态调用 getJSON
Dynamically call getJSON inside $.when block
有没有什么方法可以用更少的代码重写它,让它动态化而不是用不同的索引进行多次类似的调用?
var input = getInput();
var URL = getEndpointURL();
var results = [];
$.when(
$.getJSON(URL+input[0], function (data,status) {
results[0] = data;
}),
$.getJSON(URL+input[1], function (data,status) {
results[1] = data;
}),
$.getJSON(URL+input[2], function (data,status) {
results[2] = data;
}),
$.getJSON(URL+input[3], function (data,status) {
results[3] = data;
}),
$.getJSON(URL+input[4], function (data,status) {
results[4] = data;
}),
).then(function() {
processResults(results);
});
假设 input
是一个数组,您可以 map()
该数组来请求承诺并在该数组上使用 Promise.all()
。
const URL = 'https://jsonplaceholder.typicode.com/todos/',
input = [3, 5, 6];
const requestPromises = input.map(function(inp) {
return $.getJSON(URL + inp);
});
Promise.all(requestPromises).then(processResults)
function processResults(data) {
console.log(data)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
有没有什么方法可以用更少的代码重写它,让它动态化而不是用不同的索引进行多次类似的调用?
var input = getInput();
var URL = getEndpointURL();
var results = [];
$.when(
$.getJSON(URL+input[0], function (data,status) {
results[0] = data;
}),
$.getJSON(URL+input[1], function (data,status) {
results[1] = data;
}),
$.getJSON(URL+input[2], function (data,status) {
results[2] = data;
}),
$.getJSON(URL+input[3], function (data,status) {
results[3] = data;
}),
$.getJSON(URL+input[4], function (data,status) {
results[4] = data;
}),
).then(function() {
processResults(results);
});
假设 input
是一个数组,您可以 map()
该数组来请求承诺并在该数组上使用 Promise.all()
。
const URL = 'https://jsonplaceholder.typicode.com/todos/',
input = [3, 5, 6];
const requestPromises = input.map(function(inp) {
return $.getJSON(URL + inp);
});
Promise.all(requestPromises).then(processResults)
function processResults(data) {
console.log(data)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>