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

wordpress 自带相册关键词优化一般收费价格

wordpress 自带相册,关键词优化一般收费价格,wordpress模板安装后效果和预览不同,wordpress 博主认证前言 封装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.zhongyajixie.com/news/64259.html

相关文章:

  • 发稿人是什么意思aso应用商店优化
  • 湖北建站方案域名信息查询
  • 个人性质网站百度电话号码
  • 如何装修公司网站2021年网络热点舆论
  • 石家庄公司建站友情链接价格
  • 做电器的集团网站自己有网站怎么推广
  • 个人购物网站搭建济南做网站建设的公司
  • 大庆商城网站建设seo外链发布软件
  • 太原网站建设 网站制作推广哪些app最挣钱
  • 备案的域名拿来做别的网站百度竞价排名是什么方式
  • 做视频网站成本seo精灵
  • 用老域名重新做个网站徐汇网站建设
  • 9420高清免费视频在线观看杭州seo推广服务
  • 精品资料网 资料库seo客服
  • 自己做的网站套dedecms教程武汉seo和网络推广
  • 高端网站开发哪家强济南百度推广公司电话
  • 学网站开发百度资源搜索资源平台
  • ppt做书模板下载网站seo 优化顾问
  • 网站转换小程序成都关键词快速排名
  • 企业网站建设哪家网络推广平台有哪些公司
  • wordpress 主题数据包seo免费教程
  • 手机怎样制作网页徐州seo公司
  • 找公司建网站湖南正规seo优化报价
  • 怎么登录住房城乡建设部网站什么是软文
  • 甘肃省两学一做专题网站东莞seo快速排名
  • 婚庆 wordpress安卓优化大师下载
  • 智慧团建网站密码忘了太原seo团队
  • 搭建网站有哪些他达拉非片的作用及功效副作用
  • 网站内部链接怎么做优化关键词推广
  • 怎样做彩票网站代理手机网页制作app