首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ajaxjs 事件的执行顺序

有一个需求,滚轮滚动到相应位置的时候执行当前的动画,这个动画在footer里面,而网页的主体通过ajax进行渲染,我在js里面调用ajax渲染数据,然后再获取主体的高度,滚动到该高度的时候执行动画。...放在服务器测试发现无论怎么写,都是获取主体的高度,然后才进行数据的渲染。那么必然高度是一个极小的值,不符合我想要的属性。...我大致想了两种解决办法,均以失败告终,本地是ajax执行,服务器是js执行。...最后我想到了,ajax不就是一种异步方法,我将其改为同步不就行,先让ajax执行完在执行js事件。...当然这样做有弊端的,如果接口出问题,ajax渲染失败,那么整个网页的js都将执行不了。不过我想真到了数据都渲染不出的地方,访问网页就没有意义了,所以最后我采用了这种方法。

2.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

JS代码是怎么执行

JS代码是怎么执行的 我们看到的JS都是在浏览器中或者在Node环境中运行的对吧,那不论是浏览器还是Node,负责编译并且解释执行JS代码的都是一个叫做V8的东西,所以这个问题其实就是V8引擎是怎么去运行...JavaScript的,而js和C/C++/Go/Rust这类静态编译的语言不同,这些静态编译的语言通过编译器把代码变成机器码,然后在机器运行,js呢在编译后会生成字节码,然后在v8的虚拟机上运行字节码...,java和python也有自己的虚拟机实现,这些语言都将生成的字节码放在虚拟机上运行,相比于直接以机器码运行的语言,这些语言在损失了性能的同时又获得了更多功能上的遍历,然后我们回到V8引擎是如何执行JS...实际呢在现代的编程语言中解释型语言像JS为了功能上的需要,会引入JIT这样的技术 JIT (Just-In-Time)技术 通常,如果有一段第一次执行的字节码,解释器 Ignition 会逐条解释执行...,只需要执行编译后的机器码就可以了,这样就大大提升了代码的执行效率。

3K40

JS到底是怎么执行的:一文彻底搞清执行上下文

在开始之前,你需要熟悉一些概念,因为我们将在本文中经常用到它们: 解析器: 语法解析器是一个逐行读取代码的程序。它理解代码如何符合编程语言定义的语法,以及代码应该做什么。...然后,浏览器的JS引擎创建一个特殊的环境来处理这段JS代码的转换和执行。这个环境称为执行上下文。 执行上下文包含当前正在运行的代码,以及帮助其执行的所有内容。...当脚本在浏览器中加载时,全局上下文被创建为默认上下文,JS引擎在其中开始执行代码,并被放置在执行堆栈的底部。 然后JS引擎在代码中搜索函数调用。...对于每个函数调用,都会为该函数创建一个新的FEC,并置于当前正在执行执行上下文之上。 位于执行堆栈顶部的执行上下文成为活动的执行上下文,并且总是首先由JS引擎执行。...一旦活动的执行上下文中的所有代码执行完毕,JS引擎就会弹出执行堆栈中的特定函数的执行上下文,移动到它下面的下一个函数,以此类推。

1.2K60

JS回调是怎么回事》 | 7月28日微课 文字版

image.png 大家好,今晚的微课主要讲一个JS的回调。 这段时间51题练习群里有同学问回调是怎么回事?...基本这这二种定义,已经可以涵盖大多数情况了。关于回调函数的详细定义,我们不做过多说明,大家理解就好。 那为什么要用回调呢? 1, JS本身是单线程的,就是同时只有一个JS的线程,只有一段JS执行。...就是说,AJAX的语句不会让其余的JS语句停下来等它请求完成之后再继续执行。当一个AJAX请求发出去之后,后端接口什么时候会返回数据,其实是不知道的。这时JS就继续执行接下来的业务逻辑。...这时可以把AJAX请求放在一边,干手头的活。 这就意味着,JS所有的任务分二种,一种同步,另一种异步。...因为JS内部机制看了之后,必须要靠代码量去加深理解。 而回调个话题就不再继续深入了。毕竟它是一个相对简单的技术点,大家明白怎么用,为什么也就可以了。

1K100

彻底明白JS线程

我们都知道JS是单线程的,即js的代码只能在一个线程运行,也就说,js同时只能执行一个js任务,但是为什么要这样呢?这与浏览器的用途有关,JS的主要用途是与用户互动和操作DOM。...设想一段JS代码,分发到两个并行互不相关的线程运行,一个线程在DOM添加内容,另一个线程在删除DOM,那么会发生什么?以哪个为准?所以为了避免复杂性,JS从一开始就是单线程的,以后也不会变。...这里我们已经知道了,一段JS代码只能在一个线程从上到下的执行,但是我们遇到setTimeout或者ajax异步时,也没有等待啊,往下看。 1....浏览器 既然JS是单线程的,那么诸如onclick回调,setTimeout,Ajax这些都是怎么实现的呢?...2、对于ajax代码,http 异步线程立即发起http请求,请求成功后将回调函数扔进队列。 3、对于dom.onclick,浏览器事件线程会监听dom,直到dom被点击了,才将回调函数扔进队列。

1.1K40

Vue SSR入门实战

写一个简单的前端渲染 Demo(不包含 Ajax 数据); 将前端渲染改成后端渲染(仍然不包含 Ajax 数据); 在后端渲染的基础,加上 Ajax 数据的处理; 第一步:前端渲染 Demo 这部分比较简单...=> h(App) }); return app; }; entry-server.js 与 entry-client.js 这两个入口主要区别如下: entry-client.js 在浏览器端执行...第三步:后端渲染(预获取 Ajax 数据) 这是关键的一步,也是最难的一步。 假如第二步的组件各自都需要请求 Ajax 数据的话,该怎么处理呢?...$store.state.bar; } } 组件的 asyncData 方法已经定义好了,但是怎么索引到这个 asyncData 方法呢?先看我的根组件 App.vue 是怎么写的。...当预先获取到的 Ajax 数据返回之后,Vue 组件还没开始渲染。所以,我们无法把 Ajax 数据直接挂载到组件实例,只能把 Ajax 数据 放在单独的某个地方。 2.2.

3K50

宏任务和微任务代码的执行顺序

有小伙伴可能会答:2,4,1,3 估摸着是这么想的:我难道不知道js是一行一行执行的,setTimeout是异步,所以放后面;往下走,执行了console.log(2),.then()是异步的,放在后面...2、JavaScript事件循环 既然js是单线程,那就像只有一个窗口的食堂,学生需要排队一个一个打饭,同理js任务也要一个一个顺序执行。...; } }) console.log('代码执行结束'); 上面是一段简易的ajax请求代码: ajax进入Event Table,注册回调函数success。...3、宏任务和微任务 每个人的理解方式不同,因为宏任务和微任务并不是标准,但执行的顺序在js中是大一统了的。...4、拓展宏任务微任务 上面出了复杂的题,小伙伴们不妨可以想一想,这种复杂情况,一个套一个的该怎么执行呢?

2.6K11

扒一扒PROMISE的原理,大家不要怕!

那么异步是什么意思呢,简单地说就是不等你执行完,就执行下方的代码了。 举个?: 我们最常用的异步操作应该是ajax了(想当初我第一次用ajax的时候,简直就是灾难。...明明资源加载成功了,怎么就是没有调到资源中的数据呢?真令人头大啊。),只能等待加载完毕,再执行相关操作才能成功。因此我们看到的代码应该都是这样的。...:function(result){ callback(result); } }); } //假设我有好多个ajax,每个ajax都需要上一个ajax的支持...then好多次怎么办!将回调丢到的队列中,到时候Foreach一下逐个执行。 p3.js //p3.js function Promise(executor){ //.......Iagree.then((data)=>{ ... }).then((data)=>{ ... }).then((data)=>{ ... }) 复制代码 如果想要这样写,那么一步的

61120

html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结

js实现进入页面刷新在继续进行js的功能 js实现,进入页面刷新一下,然后在执行之后js代码需要完成的工作 js或者jquery实现固定时间刷新页面 js怎么写2秒后再刷新当前页面 设置定时2秒后执行刷新...function(){ //使用 setTimeout()方法设定定时2000毫秒window.location.reload();//页面刷新},2000); 如何让html页面实现每次刷新的时候重新执行...JS刷新当前页面的几种方法总结 reload 方法,该方法强迫浏览器刷新当前页面。...可以 就是不知道用js 或jquery怎样实现的F5功能 或者有其他方法实现 js刷心当前页面,你说的不闪应该是所有页面不会有变白的一瞬间,那就根据需要对页面某一块区域用AJAX处理,刷新的时候就只会改变...AJAX处理的内容。

13.6K30

Ghost 博客平台安装和配置

本文简要介绍如何安装和配置 Ghost,环境为 Ubuntu 16.04 系统,假设你已经拥有一个服务器和一个域名。 安装 安装过程主要参考官方教程,下面我总结下: 在系统创建一个新用户。...使用 IP 地址会报错,但是这个具体怎么报错不清楚,还没遇到过,还是推荐自己买个域名 MySQL hostname:如果 Ghost 和 MySQL 在一个服务器的话,这一项默认 localhost...第一次进入需要创建一个新作者(用户),然后就可以进行编辑发表文章了。 ? 里面有很多项可以配置,下面我说下如何实现一些常用的功能。.../ajax/libs/prism/1.16.0/prism.min.js" integrity="sha256-NFZVyNmS1YlmiklazBA+TALYJlJtZj/y/i/oADk6CVE="..."> <script src="https://cdnjs.cloudflare.com/<em>ajax</em>/libs/prism/1.16.0/components/prism-python.min.<em>js</em>

1.5K40

AJAX常见面试问题

AJAX基于标准化的并被广泛支持的技术,不需要下载浏览器插件或者小程序,但需要客户允许JavaScript在浏览器执行。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。...Ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器建立新的攻击。...平时常用的引入JS方式,是同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,也就是说,浏览器在下载或执行js代码块时,后面的标签不会被解析。...异步加载(async)JS文件,允许页面内容异步加载,仅适用于外部脚本。 延迟加载(defer)属性规定是否对脚本执行进行延迟,直到页面加载为止。 25.如果对一个js对象进行深度拷贝?...具体怎么实现?

1.8K20

谈一谈javascript异步

比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准? 所谓"单线程",就是指一次只能完成一件任务。...: 执行第一个 console.log(myData); 然后遇到了定时器,将定时器挂起(就是暂停了这个定时器) 继续执行第二个 console.log(myData); 没有可以执行js代码,回头把挂起的任务继续执行下去...两个异步函数相遇了,执行谁?谁跑的快就执行谁?...也可以这么说,其实这引发了另外一个知识点, 任务队列和事件循环 两个 console.log(myData);是同步执行的,他们都在js的主线程执行, 在主线程之外还存在一个任务队列,任务队列中存放着需要异步执行的内容...console.log(2);在主线程中,执行, setTimeout(function(){console.log(1);}, 0);放在了任务队列中, 只有在主线程执行完了才会去执行任务列队中的内容

85020

这一次,彻底弄懂 JavaScript 执行机制

依照js是按照语句出现的顺序执行这个理念,我自信的写下输出结果: //"定时器开始啦" //"马上执行for循环啦" //"执行then函数啦" //"代码执行结束" 去chrome验证下,结果完全不对...我们不禁要问了,那怎么知道主线程执行栈为空啊?...; } }) console.log('代码执行结束'); 上面是一段简易的ajax请求代码: ajax进入Event Table,注册回调函数success。...我们先说上述代码是怎么执行的: task()进入Event Table并注册,计时开始。 执行sleep函数,很慢,非常慢,计时仍在继续。...'执行这里'); setTimeout(() => { console.log('执行啦') },3000); 代码1的输出结果是: //执行这里 //执行啦 代码2的输出结果是: //执行这里

1.2K20
领券