当前位置: 首页 > news >正文

红河州建设局门户网站如何查网站死链

红河州建设局门户网站,如何查网站死链,临沧高端网站建设,大型网站频道的建设需多人协同开发前言 封装processTasks函数,实现以下需求 /*** 依次顺序执行一系列任务* 所有任务全部完成后可以得到每个任务的执行结果* 需要返回两个方法,start用于启动任务,pause用于暂停任务* 每个任务具有原子性,即不可中断,只…

前言

封装processTasks函数,实现以下需求

/*** 依次顺序执行一系列任务* 所有任务全部完成后可以得到每个任务的执行结果* 需要返回两个方法,start用于启动任务,pause用于暂停任务* 每个任务具有原子性,即不可中断,只能在两个任务之间中断* @param {...Function} tasks 任务列表,每个任务无参、异步*/
function processTasks(...tasks){}

实现

初步框架如下

function processTasks(...tasks) {const result = []let i = 0 // 当前任务索引let isRunning = false // 是否正在运行return {async start() {isRunning = truewhile (i < tasks.length) {result.push(await tasks[i]())i++if (!isRunning) return // 暂停}},pause() {isRunning = false},}
}

继续改造start的返回,手动控制Promise:

function processTasks(...tasks) {const result = []let i = 0 // 当前任务索引let isRunning = false // 是否正在运行let prom = null // 记录promise结果,防止二次调用start时重复执行之前的任务return {start() {return new Promise(async (resolve, reject) => {if (prom) {// 结束了prom.then(resolve, reject)return}if (isRunning) return // 正在运行,防止多次调用isRunning = truewhile (i < tasks.length) {try {result.push(await tasks[i]())} catch (err) {isRunning = falsereject(err)prom = Promise.reject(err)return // 失败终止}i++if (!isRunning && i < tasks.length - 1) return // 暂停}isRunning = truewhile (i < tasks.length) {try {result.push(await tasks[i]())} catch (err) {isRunning = falsereject(err)prom = Promise.reject(err)return // 失败终止}i++if (!isRunning && i < tasks.length - 1) return // 暂停}// 成功isRunning = falseresolve(result)prom = Promise.resolve(result)})},pause() {isRunning = false},}
}

测试

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./aa.js"></script>
</head><body><button id="start">开始任务</button><button id="pause">暂停任务</button><script>const tasks = []for (let i = 0; i < 5; i++) {tasks.push(() => new Promise(resovle => {setTimeout(() => {resovle(i)}, 2000);}))}const processor = processTasks(...tasks)start.onclick = async () => {console.log("开始任务");const results = await processor.start()console.log("任务执行完成:", results);}pause.onclick = () => {console.log("点击暂停");processor.pause()}</script>
</body></html>

使用场景

大文件分片上传

http://www.yayakq.cn/news/296269/

相关文章:

  • aaaa景区网站建设标准编程线上课程哪个机构好一些
  • 永州网站建设企业上海企业专属网页
  • 不备案 国内网站jsp酒店预订网站开发
  • 做海报那个网站好淘宝店铺去哪里买
  • 专业网页制作书籍seo sem区别
  • 网站域名怎么弄西安软件公司有哪些
  • 百度爱采购网站四川建设发展股份有限公司网站
  • 沂南网站优化青岛建设网站企业
  • 绵阳住房和城乡建设厅官方网站宜城网站建设
  • 完整的网站优化放啊手机建站程序免费下载
  • 长春自助建站模板沭阳网页设计
  • 公司网站开发立项文档公司网站是如何搭建的
  • 有用node.js做的网站吗东莞哪些网络公司做网站比较好
  • 某网站搜索引擎优化企业网站建设应避免数据孤岛
  • 响应式网站开发框架互联网网络营销外包
  • 网站的点击率永久免费wap自助建站
  • 网站开发合作意向书通信管理局 网站备案
  • 中国中建设计集团有限公司网站网站域名已经被绑定
  • 贵阳网站备案在哪里ftp 如何 更新 wordpress
  • 烟台网站的建设dw网站建设教程
  • 查看网站信息图标怎么做企业型网站建设
  • 怎样把网站上传到服务器上网上买保险哪个平台好
  • seo网站优化外包做网站一直不知道做什么网站
  • 网站建设专员北京网站建设培训学校
  • 哪个网站做logo好免费在线观看电影网站
  • 网站开发技术视频教程景宁建设局网站官网
  • 熊掌号网站怎么做古镇高端网站建设
  • 网站外链建设是什么代理网站平台
  • 网站开发课程学习报告不是网站可以用云主机吗
  • 架设个人网站模板设计原则