原生Javascript同步执行数组任务

let arr = [{"title":"三天三夜,困在湖北高速上的人","data":["徐顺用“爬行”来形容被困湖北仙桃高速的3天。","2月3日一早,他一家五口从武汉出发,驱车赶往300公里外的宜昌老家。两地都在湖北省内,路不算远,但仅是距离荆州服务区那4公里路,就堵了22小时。一路上,他只有一个念头,“离开这里,回家过年。”","2月3日入夜起,极端暴雪冻雨天气继续侵袭湖北,高速路上车辆拥堵加剧。湖北气象台数据显示,截至2月5日5时,湖北大部地区积雪深度达1至20厘米,其中21县(市、区)积雪深度超过10厘米。","据中新网消息,截至2月5日14时,湖北省高速公路收费站尚有100个因道路结冰采取交通管制措施,主要集中在武汉、孝感、荆州、黄冈、咸宁、随州等地区。","湖北高速上的三天三夜里,有人试着在积雪、饥饿与焦虑中自救,徒手扒开埋着轮胎的雪、翻过高速护栏到服务区买泡面;更多的人,在等待中互助,顶着严寒一起凿冰、一辆接一辆地推车。","<strong>“车子堵,我们人也心堵了”</strong>","2月3日一早,徐顺一家从武汉出发时,正下着小雪,他没太在意。","当天6时50分,武汉中心气象台发布暴雪橙色预警,预计3日至4日,宜昌、荆门、潜江、仙桃、武汉等地有大到暴雪,局部大暴雪。","相较天气,占据徐顺心头的是回乡的念想。72岁的他有10年没回老家宜昌过年了。之前儿子在深圳工作,他和妻子帮着带孙子,一家五口都是留在深圳过年。他说,回趟老家得大几千块钱,他舍不得。今年儿子调来武汉工作,开车回家也就几小时,幺弟的姑娘也将出嫁,他不想缺席。","但车开上湖北仙桃时,形势急转之下——开始堵了,平时他们沿途经过潜江市的路程也就俩小时,当时耗了近半天;当晚,他们离开潜江,距荆州服务区只剩四公里时,堵得他们愣是在车上熬夜了一宿,冷得直打哆嗦;徐顺知道,侄女的婚礼是赶不上了。","收看了天气预报,武婷和老乡自驾返乡前买好了轮胎防滑链,一行人从江苏无锡出发。2月3日早上,她和老乡驶入湖北省境内时,车开始打滑,防滑链派上了用场,结果当晚临近潜江服务区,他们几乎寸步难行,“车就是动个几百米,又停两三个小时”,武婷说。","2月4日早上7点,沪渝高速上武婷一行人前方排队的车辆和地上的积雪。","据她拍摄的现场视频,当时路面的积雪已没过车胎底部,靠近车轱辘处。沿途挨着的车相距仅约一个车身,车顶上都覆了层雪,不少雨刷器上的雪已经结块。武婷说,即便上了防滑链,为了安全,车有时连10码都跑不到,“我一路看到很多车原地打滑。”"]},{"title":"胖东来将落户郑州中原区?回应来了","data":["胖东来要落户郑州中原区?作为商超界的顶流,胖东来的动向一直备受关注。近日,有网友晒出一张截图称,中原区近日已与胖东来对接。据此,网上传出胖东来要落户郑州中原区的消息。胖东来这次真的要来郑州开分店了吗?记者对此进行了求证。","根据网友晒出的截图内容,记者发现截图来源于人民网领导留言板,系郑州市中原区商务局对网友建言的回复。有网友建言称,热切希望中原区领导与胖东来合作,在(中原区)新区开一个胖东来。对此,郑州市中原区商务局在2月2日回复称,<strong>中原区领导高度重视,区主要领导已经亲自和胖东来对接,沟通交流,争取合作</strong>。","有网友将上述回复截图,并发文称“胖东来要来郑州了”!","作为河南本地著名连锁超市,胖东来已经成为了河南商业的一张名片。在刚刚结束的省两会上,胖东来同样受到关注,根据河南省政府工作报告,在河南2024年的重点工作安排中提到,“支持胖东来等流量商超的发展。”","就胖东来是否真的要来郑州开分店一事,2月5日,记者联系上了许昌胖东来的相关工作人员进行了求证。在被问及胖东来是否要来郑州或者中原区开分店时,该工作人员告诉记者:<strong>“暂时未有到郑州开店的计划”</strong>。","来源:大象新闻","爆料、维权通道:应用市场下载“晨视频”客户端,搜索“帮忙”一键直达“晨意帮忙”平台;或拨打热线0731-85571188。政企内容服务专席19176699651。"]},]


let aa= document.getElementsByClassName("tiptap ProseMirror");


// 异步任务函数
function task(params, callback) {
  setTimeout(() => {
    if (!!callback) {
      callback(params);
    }
  }, 2000);
}

const tasks = [];


arr.forEach((item, index) => {
  tasks.push(function () {
    return new Promise((resolve) => {
      task(item, (ret) => {

        //填写标题和内容
      aa[0].innerHTML = ret.title
      aa[1].innerHTML = ret.data

        
       
        if (index + 1 < arr.length) {
         
        }
        resolve(ret);
      });
    });
  });
});

// 定义一个递归函数来依次执行任务
function runTasks(index) {
  if (index >= tasks.length) {
    // 如果所有任务都已经执行完毕,返回一个 resolved 的 Promise
    return Promise.resolve();
  }

  // 执行当前任务,然后递归执行下一个任务
  return tasks[index]().then(function () {
    return runTasks(index + 1);
  });
}

// 调用递归函数来执行任务
runTasks(0)
  .then(function () {
    console.log("A所有任务执行完毕!");
  })
  .catch(function (error) {
    console.error(error);
  });

如果用for循环执行任务,由于任务都是异步,无法做到执行完第一个任务后再接着执行下一个任务,采取这种形式,就可以实现同步执行这些任务

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桃花岛主70

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值