JS定时器清除之后,已经开始但是没有运行完的函数还会继续运行吗?

最近使用定时器的时候遇到这样一种情况,定时器清除了,功能仍然在跑(遍历数组,同步定时网络请求)。 排查了一下代码,发现逻辑确实没问题。后来一想,是不是函数没运行完,仍然在跑,于是上代码测试了一下: let timer = setInterval(async () => { console.log(\"开始\") await new Promise((resolve) => { setTim
JS定时器清除之后,已经开始但是没有运行完的函数还会继续运行吗?

前端Mockjs学习笔记,持续记录

相比于自己写一个模拟数据返回的后端接口,好像还是这个来的更加方便。 让前端攻城师独立于后端进行开发。不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。 基于对window的xhr对象的二次封装,增加了用于拦截的逻辑。 npm install mockjs Mock.setup({ timeout: 400 }) M
前端Mockjs学习笔记,持续记录

WebRTC开发经验总结,持续记录

volume 音量约束 sampleRate: 采样率 sampleSize: 采样大小,采样的位数 echoCancellation: 回音消除 autoGaincontrol: 增加音量 noiseSuppression: 降噪 latency : 延迟大小 channelCount: 切换声道 deviceID: 多个音频输入输出设备的进行切换 groupId: 同一个物理设备,是一个分组,
WebRTC开发经验总结,持续记录

《千锋最新前端webpack5》学习笔记,持续记录

视频地址:https://www.bilibili.com/video/BV1YU4y1g745 webpack文档:https://webpack.docschina.org/concepts/ 了解一下CMD模块化规范。(module.export={}相关规范) Require.js不通过config方法配置模块路径时,也可以做require时指定完整的引入路径(require(
《千锋最新前端webpack5》学习笔记,持续记录

JS的异步编程过程中的问题集锦、echarts使用记录。

为了方便维护,在JS里的把html模板和业务逻辑做了分离,在业务逻辑里向模板对象传递指定的data对象返回生成好的html,以往的数据对象是用户交互产生的,今天需要改成从接口拉取。 按照以往的逻辑,获取用户的交互数据,传递给模板。基本上是同步的,今天修改的时候为了不触碰原有的代码,把网络请求单独放在了其他对象里,业务流程变成了,调用网络请求函数产生的返回值作为数据对象传递给模板对象。 一切看似没问
JS的异步编程过程中的问题集锦、echarts使用记录。

Es6学习笔记,持续记录

解构:https://www.runoob.com/w3cnote/deconstruction-assignment.html ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成 Set 数据结构。 const s = new Set(); .forEach(x => s.ad
Es6学习笔记,持续记录

记录一下Jquery日常使用过程中的一些经验

find()可以在所有后代元素里查找,而children()只会查找子代元素(不包括第二层级)。 not() 从匹配元素集合中删除元素。从包含所有段落的集合中删除 id 为 \"selected\" 的段落: $(\"p\").not(\"#selected\") is() 方法用于查看选择的元素是否匹配选择器。 $(selector).is(selectorElement,function(index,el
记录一下Jquery日常使用过程中的一些经验

JS学习笔记,持续记录

回调函数内的this指向了dom对象本身,注意JQ的内存问题,删除dom时自定义的事件会继续存在。 $(\".select li\").click(function (event){ $(\".select li\").removeClass(\"current\"); $(event.target).addClass(\"current\"); }) $(\".btn\").click(function(e){ /
JS学习笔记,持续记录

Layui学习笔记,一起加油!

Layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。 全局对象 layui,一切从它开始。 建立模块入口,并通过 layui.use() 方式来加载该入口文件,加载指定目录下的index.js文件内的模块。 <script> layui.config({ base: \'/res
Layui学习笔记,一起加油!

JS模块化编程以及AMD、CMD规范、Webpack

先想一想,为什么模块很重要? 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作、模块复用、单元测试等等一系列复杂的需求。 因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的
JS模块化编程以及AMD、CMD规范、Webpack

记录一些以前没见过的JS语法

《ES6标准入门 第3版 .pdf》看了一遍,时间长了没怎么用,也没记住多少,嗯,那只好在实践中学习。 1. js中函数的两种命名方式,即表达式和声明式。 :函数的声明式写法为:function foo(){/*...*/},这种写法会导致函数提升,所有function关键字都会被解释器优先编译,不管是声明在什么位置,都可以调用它,但是它本身不会被执行,定义只是让解释器知道其存在,只有在被调用的时
记录一些以前没见过的JS语法

JS浏览器环境下各种实用API记录

常见的不做记录,在这记录自己以前没见过的。 Clipboard API 是下一代的剪贴板操作方法,比传统的document.execCommand()方法更强大、更合理。 它的所有操作都是异步的,返回 Promise 对象,不会造成页面卡顿。而且,它可以将任意内容(比如图片)放入剪贴板。 const clipboardObj = navigator.clipboard; /*返回 Clipboar
JS浏览器环境下各种实用API记录

Ajax文件上传时:Formdata、File、Blob的关系

“Formdata”接口提供了一种表示表单数据的键值对 key/value 的构造方式,并且可以轻松的将数据通过XMLHttpRequest.send() 方法发送出去。 实现了 FormData 接口的对象可以直接在for...of(遍历属性值,for...in 则是遍历属性名)结构中使用,而不需要调用entries()返回可迭代对象(iterator) : for (var p of myFo
Ajax文件上传时:Formdata、File、Blob的关系

当鼠标按下时拖动元素,简单的JS实现

监听需要移动元素的键盘按下、松开事件和文档对象的鼠标移动事件, 通过一个布尔值作为是否移动的标志,按下时为TRUE,代表跟随移动,鼠标松开为FALSE,代表不跟随移动,鼠标移动时改变元素偏移量。 <!DOCTYPE html> <html lang=\"en\"> <head> <meta charset=\"UTF-8\"> <meta name=\"
当鼠标按下时拖动元素,简单的JS实现