js/jsfun/fnStack.js 栈操作
//栈遵循的是后进先出的原则
//构造栈
let qKey = "q_1"
let qKey2 = "q_2"
//初始化栈,默认元素ID为当前http请求ID值,也可以自定义
fnStack_init(qKey, 10, 20000)
let elementID0 = "elementID_0"
let elementID1 = "elementID_1"
let elementID2 = "elementID_2"
let elementID3 = "elementID_3"
let elementID4 = "elementID_4"
let elementID5 = "elementID_5"
for (let i = 0; i < 6; i++) {
fnStack_push(qKey, "elementID_" + i)
}
for (let i = 0; i < 6; i++) {
fnStack_push(qKey2, "elementID_" + i)
}
console.log("栈全部元素:", fnStack_list(qKey))
console.log("栈长度:", fnStack_len(qKey))
console.log("是否首个元素:0:", fnStack_isFirst(qKey, elementID5))
console.log("是否首个元素:1:", fnStack_isFirst(qKey, elementID4))
console.log("弹出首个元素:", fnStack_pop(qKey))
console.log("是否首个元素:0:", fnStack_isFirst(qKey, elementID5))
console.log("是否首个元素:1:", fnStack_isFirst(qKey, elementID4))
console.log("栈长度:", fnStack_len(qKey))
console.log("栈全部元素:", fnStack_list(qKey))
console.log("栈2全部元素:", fnStack_list(qKey2))
console.log("全部栈", fnStack_allList())
console.log("删除栈元素", fnStack_delete(qKey,elementID3))
console.log("栈长度:", fnStack_len(qKey))
console.log("栈全部元素:", fnStack_list(qKey))
console.log("栈首元素:", fnStack_first(qKey))
console.log("栈当前元素默认ID", fnStack_defaultID())
console.log("栈当前元素索引位置", fnStack_index(qKey,elementID2))
console.log("栈信息:", fnStack_info(qKey))
//判断栈元素是否是首元素,如果是,则进入业务
if (fnStack_isFirst(qKey, elementID4)) {
console.log("stack_run_business 执行业务:", qKey, elementID4)
} else {
console.log("stack_run_business 非法进入业务:",qKey, elementID4)
}
//判断栈元素是否是首元素,如果还不是首元素,可以for也可以一直选项等待栈的首元素弹出
for (let i = 0; i < 100; i++) {
if (fnStack_isFirst(qKey, elementID4)) {
console.log("我已经是栈首元素了,开始执行业务");
console.log("我的业务执行完了,记得将首元素移出,可以弹出首元素,也可以删除指定元素ID")
//如果已经知道首元素ID,建议用fnStack_delete,删除指定元素比较靠谱,防止当前使用首元素已经被弹出
//弹出首元素
fnStack_pop(qKey)
//删除执行元素
//fnStack_delete(qKey,elementID1)
} else {
// console.log("我还没进入栈首元素,只能耐心等待");
//休眠时间最好是执行业务的时间,或者1/2,太长了就会浪费大家等待时间,太短会造成CPU的资源浪费,适合最好
fnTime_sleep(20)
}
}
let bln= fnStack_waitToFirst(qKey,elementID4,5000)
if(bln){
console.log("我已经是栈首元素了,开始执行业务");
console.log("我的业务执行完了,记得将首元素移出,可以弹出首元素,也可以删除指定元素ID")
//如果已经知道首元素ID,建议用fnStack_delete,删除指定元素比较靠谱,防止当前使用首元素已经被弹出
//弹出首元素
fnStack_pop(qKey)
//删除执行元素
//fnStack_delete(qKey,elementID1)
}else {
console.log("我已经被删除了") ;
}
console.log("清除栈元素", fnStack_clear(qKey));
console.log("清除全部栈元素", fnStack_clearAll());