首页 > 其他分享 >20230515学习笔记——js中的同步任务与异步任务,宏任务与微任务

20230515学习笔记——js中的同步任务与异步任务,宏任务与微任务

时间:2023-05-15 10:13:24浏览次数:37  
标签:异步 同步 20230515 js 耗时 任务 执行

2023-05-15

(1)js中的同步任务与异步任务

①同步任务是指:不耗时的任务,就是执行很快,

②异步任务是指:耗时的任务,它里面有一个机制是EventLoop(事件循环),即值耗时任务会被js分配到宿主环境中进行执行,执行后的结果放到一个“消息队列”中,当js将同步任务执行完毕后,才会调用异步环境。在消息队列中的存放顺序的位置的规则是按照“谁(异步任务)先执行完,谁的运算结果先存放”,之后使用回调函数进行调用。

(2)有关EventLoop的经典面试题

 问题:请说明上述代码的执行顺序

结果:ADCB

理由:A与D时同步任务,readFile与setTimeout是异步任务。A,B先执行,C,D后执行,因为setTimeout中的0毫秒之后进行响应,它的返回结果需要的时间短,它先执行。readFile异步任务中读取文件需要时间,因此它最后执行。所以执行的结果是ADCB。

(3)宏任务与微任务

①宏任务与微任务都是异步任务

②宏观任务与微观任务的划分如下:

 

标签:异步,同步,20230515,js,耗时,任务,执行
From: https://www.cnblogs.com/isDaHua/p/17400787.html

相关文章

  • Newtonsoft.Json 迁移到 System.Text.Json
    从Newtonsoft.Json迁移到System.Text.Json 一.写在前面System.Text.Json是.NETCore3及以上版本内置的Json序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复了各种问题,是时候考虑使用System.Text.Json了。本文将从使用......
  • package.json 中的 browser main module
    npm 包其实又分为:只允许在客户端使用的,只允许造服务端使用的,浏览器/服务端都可以使用。如果我们需要开发一个 npm 包同时兼容支持web端和server端,需要在不同环境下加载npm包不同的入口文件,显然一个 main 字段已经不能够满足我们的需求,这就衍生出来了 module 与 browse......
  • ThreadPoolExecutor获取线程池中已经运行完的任务结果
    方法一:使用as_completed函数fromconcurrent.futuresimportThreadPoolExecutor,as_completedfromtimeimportsleepdefmethod(times):sleep(times)print('sleep{}secondes'.format(times))returntimespool=ThreadPoolExecutor(max_wor......
  • 「硬核JS」你的程序中可能存在内存泄漏
    写在前面想来很多同学看到内存泄漏,内心直接会跳出两个字:闭包!!!再让你说点其它的估计就噤声了。如果你对内存泄漏的了解仅限于闭包,那真的是应该仔细看此文了,闭包可能会造成内存泄漏,但是内存泄漏并不是只有闭包,它只是内存泄漏的引子之一罢了。写的程序运行一段时间后慢慢变卡甚至要......
  • 使用vscode搭建 vue3 + vite 项目, 部署到服务器 js css文件路径访问不到的问题
    使用vscode搭建vue3+vite项目,本地没有问题,build后部署到服务器,默认访问的是域名下的jscss文件,导致相对路径无法访问到。在vite.config.js中添加 :base: "./" 后就可以了。原因:默认的是 "/",  而我部署的路径是:/其他路径/项目名/dist/ ,所以把base改为./后......
  • mysql8之json/数组的增删改查
    前言,类型必须是json,虽然text也可以,但是很多操作没法使用,比如查询,当然了,这种类型还可以存储数组类似varchar,设置JSON主要将字段的type是json,不能设置长度,可以是NULL但不能有默认值。创建jsonjson_array创建json数组json_object创建json对象查询jsonjson_contain......
  • MySQL8JSON数组函数之json_array_append、json_array_insert
    json_array_append、json_array_insert顾名思义就是向数组中追加和插入值,因为没有找到合适的例子,所以就使用官方的例子进行说明1、json_array_append向指定的位置后追加值,查询和修改的函数如下所示:updatetest_jsonsettest_json_array=json_array_append(test_json_array,......
  • babylon.js 学习笔记(1)
    简单来说,babylon.js是一个能跑在浏览器上的(3D)游戏渲染引擎,而且官方提供了一个友好在线交互学习平台Playground,其开源项目在github上star数截止2023.05.14高达20.6K。下面是官方文档的学习笔记:一、helloworld强烈建议新手通过Playground在线体验,先来看第1个示例:核心代码如......
  • crontab设置定时任务脚本文件每秒运行一次,每个月最后一天的21点到22点 每20分钟(1200秒
    每秒运行一次#!/bin/bashstep=2for((i=0;i<60;i=(i+step)));dophp/home/www/tp6/thinkzhangsleep$stepdoneexit0每个月最后一天的21点到22点20分钟(1200)执行一次#!/bin/bashtoday=`date+%d`hour=`date+%H`last_day=`cal|xargs|awk'{print$NF}'`if["$to......
  • mysql8 json 索引总结
    表结构如下所示:CREATETABLE`test_json`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(32)NOTNULL,`age`intNOTNULL,`test_json_array`jsonNOTNULL,`test_json_object`jsonNOTNULL,`test_json_array_object`jsonNOTNULL,`custinfo......