一、变量操作
//队列操作函数
function Mesh_Send_List(){
this.dataStore = []; //新建队列
this.enqueue = function enqueue ( element ) { //向队列末尾添加一个元素,直接调用 push 方法即可
this.dataStore.push( element );
};
this.dequeue = function dequeue () { //删除队列首的元素,可以利用 JS 数组中的 shift 方法
if( this.empty() ) return 'This queue is empty';
else this.dataStore.shift();
};
this.front = function front(){ //查看队首元素,直接返回数组首个元素即可
if( this.empty() ) return 'This queue is empty';
else return this.dataStore[0];
};
this.back = function back () { //读取队列尾的元素
if( this.empty() ) return 'This queue is empty';
else return this.dataStore[ this.dataStore.length - 1 ];
};
this.getall = function getall(){ //查看对了所有元素,我这里采用数组的 join 方法实现
return this.dataStore.join('\n');
};
this.clear = function clear(){ //清空当前队列,也很简单,我们直接将 dataStore 数值清空即可
delete this.dataStore;
this.dataStore = [];
};
this.empty = function empty(){ //我们通过判断 dataStore 的长度就可知道队列是否为空
if( this.dataStore.length == 0 ) return true;
else return false;
};
}
var queue = new Mesh_Send_List();
console.log( queue.empty() ); //true
//添加几个元素
queue.enqueue({
Mesh_type:0,
Mesh_addrH:0,
Mesh_addrL:0,
Mesh_data:0,
});
queue.enqueue({
Mesh_type:1,
Mesh_addrH:1,
Mesh_addrL:1,
Mesh_data:1,
});
queue.enqueue({
Mesh_type:2,
Mesh_addrH:2,
Mesh_addrL:2,
Mesh_data:2,
});
console.log( queue.empty() ); // false
//查看队首元素
console.log( queue.front().Mesh_type ); // Apple
//查看队尾元素
console.log( queue.back().Mesh_type ); // Pear
//出队
queue.dequeue();
//查看队首元素
console.log( queue.front().Mesh_type ); // Banana
//查看队尾元素
console.log( queue.back().Mesh_type ); // Pear
二、请求操作
function task1() {
return new Promise((resolve, reject) => {
// 异步操作
setTimeout(() => {
console.log("Task 1 completed");
resolve();
}, 2000);
});
}
function task2() {
return new Promise((resolve, reject) => {
// 异步操作
setTimeout(() => {
console.log("Task 2 completed");
resolve();
}, 2000);
});
}
task1().then(task2);
async function controlOrder() {
await task1();
await task2();
}
controlOrder();