首页 > 其他分享 >js 异步任务执行顺序问题

js 异步任务执行顺序问题

时间:2023-04-15 20:24:13浏览次数:38  
标签:异步 顺序 console log js 任务 resolve

js是单线程的(非阻塞的),实现方法就是事件循环;

分同步任务和异步任务;

    new Promise((resolve,reject) => {
      resolve(1)
      console.log('log1')
    }).then(() => {
      console.log('log2')
    })
    console.log('log3')
    setTimeout(() => {
      console.log('log4')
      Promise.resolve(2).then(() => {
        console.log('log5')
      })
    }, 0)
    setTimeout(() => {
      console.log('log6')
    }, 0)
    console.log('log7')

 执行顺序如下:

宏任务--微任务--异步宏任务(对应该供任务的为任务)---下一个异步宏任务

故打印顺序为:

      log1
      log3
      log7
      log2
      log4
      log5
      log6

  

标签:异步,顺序,console,log,js,任务,resolve
From: https://www.cnblogs.com/xhliang/p/17321763.html

相关文章

  • Vue3中(vite.config.js)配置打包的时候去除console.log
    参考:https://www.cnblogs.com/lovewhatIlove/p/16476165.html安装tersernpmadd-Dterservite中配置import{defineConfig}from"vite";importvuefrom"@vitejs/plugin-vue";importvueJsxfrom"@vitejs/plugin-vue-jsx";importvisua......
  • js方法实现 10+ 100+ 1000+ 10000+
    将数字类型优化12=>10+120=>100+1200=>1000+10以内不管调用后赋值进行数字化item.read_num=Number(util.picture(item.read_num))直接cv代码数字优化自己调用定义函数**//浏览量优化functionpicture(num){if(num<10){returnnum;}va......
  • springboot项目打成jar包后 ,配置文件加载的优先级顺序
    SpringBoot会按照以下顺序来加载配置文件:1、内置默认值:SpringBoot会首先加载内置的默认值,这些默认值定义在SpringBoot的代码中,例如,内置的默认端口号为8080。2、应用级别的配置文件:SpringBoot会从以下位置加载应用级别的配置文件,这些位置按照优先级逐一检查:当前目录下的/c......
  • js 数组、对象转json 以及json转 数组、对象
    1、JS对象转JSON方式:JSON.stringify(obj)varjson={"name":"iphone","price":666};//创建对象;varjsonStr=JSON.stringify(json);//转为JSON字符串console.log(jsonStr);2、JS数组转JSON//数组转json串vararr=[1,2,3,{a:1}];JSON.st......
  • js 浏览器中当前页下载文件
    1downloadImg(url:string,name:string):void{2letxhr=newXMLHttpRequest();3xhr.responseType='blob';4xhr.open('GET',url);5xhr.send();6xhr.addEventListener('load',function(){7letblob=xhr.resp......
  • 在Node.JS中,调用JShaman的Web API接口,加密JS代码。
    在Node.JS中,调用JShaman的WebAPI接口,加密JS代码。源码varjs_code=` functionNewObject(prefix) { varcount=0; this.SayHello=function(msg) { count++; alert(prefix+msg); } this.GetCount=function() { returncount; } } varobj=newNewO......
  • json数据按照某一个相同键值进行分类成一个新的二维json数组
    1formatTreeData(checkNodes){2varmap={},3targetData=[];4checkNodes.forEach(item=>{5if(!map[item.groupKey]){6targetData.push({7value:item.groupKey,8label......
  • momentjs学习笔记
    momentjs学习笔记文档:http://momentjs.cn/docs/#/get-set/参考:https://blog.csdn.net/yuan_jlj/article/details/117294481......
  • transtale.js v1.1
    functiongc(){varname="transLang=";varca=document.cookie.split(';');for(vari=0;i<ca.length;i++){varc=ca[i].trim();if(c.indexOf(name)==0)returnc.substring(name.length,c.length);......
  • 关于js对象遍历保证顺序的问题
    Object.keys(obj).sort().forEach(...),注:仅用于对象的key值是可定义顺序的,如key值为时间错,数字等,通过sort(),可默认按照数组大小排序(也可通过sort的自定义函数排序)object.keys/values()和forin不能保证对象传成数组或遍历的顺序友情链接1友情链接2......