let obj = {};
function Apis(key) {
obj[key] = [];
return function(task) {
return new Promise((resolve, reject) => {
obj[key].push(task);
Promise.all([...obj[key]]).then(res => {
const i = obj[key].findIndex(item => {
return item == task;
});
resolve(obj[key][i]);
arr.splice(i, 1);
})
})
}
}
// 模拟request请求
const t = function(name, time) {
return new Promise(resolve => {
setTimeout(() => {
console.log(`${name}结束`)
resolve(`${name}返回`);
}, time)
})
}
const client = new Apis('/paht');
client(t('任务1', 1500)).then(res => {
console.log(res);
});
client(t('任务2', 500)).then(res => {
console.log(res);
});
client(t('任务3', 1200)).then(res => {
console.log(res);
});
// 任务2结束
// 任务3结束
// 任务1结束
// 任务1返回
// 任务2返回
// 任务3返回
js解决多次发起同一个请求因返回时间不同造成数据覆盖问题
最新推荐文章于 2024-03-28 15:29:26 发布
该文章展示了如何使用JavaScript创建一个管理异步任务的函数apis,它将任务添加到队列并利用Promise.all处理所有任务。当指定任务完成后,从队列中移除并返回结果。文中通过模拟request请求来演示apis的用法,显示了任务按照时间顺序执行但返回结果的异步性质。
摘要由CSDN通过智能技术生成