44 lines
818 B
Markdown
44 lines
818 B
Markdown
# 11-数据队列
|
|
|
|
```js
|
|
// 模拟一个异步函数
|
|
function asyncFunction(task) {
|
|
return new Promise(resolve => {
|
|
setTimeout(() => {
|
|
console.log(task);
|
|
resolve();
|
|
}, 1000);
|
|
});
|
|
}
|
|
|
|
// 创建一个任务队列
|
|
const taskQueue = [];
|
|
|
|
// 添加任务到队列
|
|
function addToQueue(task) {
|
|
taskQueue.push(task);
|
|
if (taskQueue.length === 1) {
|
|
processQueue();
|
|
}
|
|
}
|
|
|
|
// 处理队列中的任务
|
|
async function processQueue() {
|
|
while (taskQueue.length > 0) {
|
|
const task = taskQueue[0];
|
|
await asyncFunction(task);
|
|
taskQueue.shift(); // 移除已处理的任务
|
|
}
|
|
}
|
|
|
|
// 添加任务到队列
|
|
addToQueue('Task 1');
|
|
addToQueue('Task 2');
|
|
addToQueue('Task 3');
|
|
```
|
|
|
|
todo:
|
|
|
|
1. 多任务并发
|
|
2. 完成一个添加一个
|
|
3. 下载器 |