在for循环中运行$.getJSON,并在所有调用完成时执行代码,可以使用Promise对象和async/await来实现。
首先,将每个$.getJSON请求封装为一个返回Promise的函数,以便在for循环中调用。这样可以确保每个请求都能够顺序执行,并且可以在所有请求完成后执行代码。
以下是一个示例代码:
async function getData(url) {
return new Promise((resolve, reject) => {
$.getJSON(url, function(data) {
resolve(data);
}).fail(function(error) {
reject(error);
});
});
}
async function fetchData() {
const urls = ['url1', 'url2', 'url3']; // 假设有三个请求的URL
const promises = urls.map(url => getData(url)); // 将每个请求封装为Promise对象
try {
const results = await Promise.all(promises); // 等待所有请求完成
console.log(results); // 打印每个请求的结果
// 在所有请求完成后执行的代码
console.log("所有请求完成");
} catch (error) {
console.error(error);
}
}
fetchData();
在上述代码中,我们定义了一个getData
函数,它接收一个URL参数,并返回一个Promise对象。在该函数内部,我们使用$.getJSON
来发送请求,并在请求成功时调用resolve
,请求失败时调用reject
。
然后,我们定义了一个fetchData
函数,它使用urls
数组存储需要请求的URL。我们使用map
方法将每个URL传递给getData
函数,得到一个Promise数组。
接下来,我们使用Promise.all
方法等待所有请求完成。一旦所有请求都成功完成,将返回一个包含每个请求结果的数组。我们可以通过await
关键字将其赋值给results
变量。
最后,我们可以在results
中处理每个请求的结果,并在所有请求完成后执行相应的代码。
请注意,以上示例中的URL仅为示意,实际应根据具体需求进行修改。此外,示例中使用的是jQuery的$.getJSON
方法,你可以根据需要使用其他库或原生的fetch
方法来发送请求。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云