异步调用js的几种方法

前端首屏优化 | 借助客户端能力提升 H5 首屏的 8 个手段 之前写了一篇文章,聊到了如何根据来梳理性能优化方案,反响还不错。于是,我计划输出「前端首屏优化」专栏系列,从不同角度聊聊首屏优化实践,包括且不限于防劣化、工程体系、端能力等,欢迎关注 ✨✨。作为专栏的第一篇,本文将从客户端角度,聊聊如何借助优化前端首屏加载速度。除了方案介绍,本文还会提供数据收益、注意事项、开发成本等,以帮助大家更好的评估实现优先级,选择合适业务的方案。本文主要是经验和原理之谈,不涉及客户端代码实现,比较适合想开拓视野的。上图为通用的利用分类思维,对该流程进行。 阅读详情
Ext.Ajax.request({  
                url : urlStr,  
                params : paramsObj,  
                method : 'POST',  
                success :  function(response) {  
                     if (callbackFunc) {  
                         var result = Ext.util.JSON  
                                .decode(response.responseText);  
                         var cbfn = callbackFunc.createCallback(result);  
                        cbfn();  
                    }  
                },  
                failure :  function() {  
                    Ext.Msg.alert("提示", "方法调用失败");  
                }  
            });  
 
Jquery ajax 的 $.ajax(),$.post(),$.get(),$.getJSON();
 
$.ajax({

                    type: "post",

                    url: "JqueryCSMethodForm.aspx/GetNowDate",

                    datatype: "json",

                    contentType: "application/json; charset=utf-8",

                    success:  function(data) {

                        $("input#showTime").val(eval('(' + data.d + ')')[0].nowtime);

                    },

                    error:  function(XMLHttpRequest, textStatus, errorThrown) {

                        alert(errorThrown);

                    }

                });
 
jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

http://api.jquery.com/jQuery.post/
 

 jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

$.get("test.cgi", { name: "John", time: "2pm" },
    function(data){
     alert("Data Loaded: " + data);
   });
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "cat",
    tagmode: "any",
    format: "json"
  },
   function(data) {
    $.each(data.items,  function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
       if ( i == 3 )  return  false;
    });
 
 
 

默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页头会导致加载很慢的话,是会严重影响用户体验的。

(1) defer,只支持IE
defer属性的定义和用法(我摘自w3school网站)
defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。
有的 javascript 脚本 document.write 方法来创建当前的文档内容,其他脚本就不一定是了。

如果您的脚本不会改变文档的内容,可将 defer 属性加入到 <script> 标签中,以便加快处理文档的速度。因为浏览器知道它将能够安全地读取文档的剩余部分而不用执行脚本,它将推迟对脚本的解释,直到文档已经显示给用户为止。
示例:
复制代码 代码如下:
<script type="text/javascript" defer="defer">
alert(document.getElementById("p1").firstChild.nodeValue);
</script>

(2) async:
async的定义和用法(是HTML5的属性)
async 属性规定一旦脚本可用,则会异步执行。
示例:
复制代码 代码如下:
<script type="text/javascript" src="demo_async.js" async="async"></script>

注释:async 属性仅适用于外部脚本(只有在使用 src 属性时)。
注释:有多种执行外部脚本的方法:
•如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)
•如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行
•如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本

(3) 创建script,插入到DOM中,加载完毕后callBack,见代码:
复制代码 代码如下:
function loadScript(url, callback){
var script = document.createElement_x("script")
script.type = "text/javascript";
if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others: Firefox, Safari, Chrome, and Opera
script.onload = function(){
callback();
};
}
script.src = url;
document.body.appendChild(script);
}

Jupyter Notebook 命名出现“error”且运行后没反应 Jupyter Notebook 命名出现“error”且运行后没反应提前声明错误截图(方便大家看看是不是自己的错误)解决方法 提前声明 我的问题是在看到答主 @开始King的回答后才解决的,因为答主大大的文章后面有些地方不是很详细,我在这里再在King大大的基础上完善一下子 错误截图(方便大家看看是不是自己的错误) 1.命名失败,上面出现一个“error”字样 2.运行失败,无论是点击上方的运行按钮还是按快捷键shift+enter 都只会向下再增加一个代码块,而不会运行程序。 (也不是很多人出现的[* 阅读详情

相关推荐

变压器励磁电感、励磁电流、漏感、漏感折算

励磁、漏感知识整理

HW-BASE的博客 9766

js脚本加载失败如何重试

js脚本加载失败重试

qq_56463255的博客 606

YoloV10改进策略:卷积篇|基于PConv的二次创新|附结构图|性能和精度得到大幅度提高(独家原创)

在PConv的基础上做了二次创新,创新后的模型不仅在精度和速度上有了质的提升,还可以支持Stride为2的降采样。改进方法简单高效,需要发论文的同学不要错过!

m0_47867638的博客 1054

Google Maps JavaScript API Loader 使用教程

Google Maps JavaScript API Loader 使用教程 项目介绍 @googlemaps/js-api-loader 是一个用于在 JavaScript 应用中动态加载 Google Maps API 的 npm 包。它提供了灵活的方式来管理 API 的加载,支持异步加载和按需加载,从而优化页面性能。 项目快速启动 安装 首先,通过 npm 安装 @googlemaps/js...

gitblog_00870的博客 750

高德地图官方教程

1. 首先,,成为高德开放平台开发者2. 登陆之后,在进入「应用管理」 页面「创建新应用」3. 为应用,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」,设置域名白名单,可选(建议设置域名白名单)。4. 添加成功后,可获取到key值。5.运行安装vue-cli6. 创建项目 vue create vue-map 其中vue-map为项目目录名称7.根据提示设置下项目相关内容8.执行命令开始启动项目了。

m0_64707449的博客 3096

JS异步加载及解决方式

1.js中的同步加载和异步加载有什么不同? javascript语言是单线程机制。所谓单线程就是按次序执行,执行完一个任务再执行下一个。 对于浏览器来说,也就是无法在渲染页面的同时执行代码。 同步加载:也就是说一个事件处理程序没加载完之前,不会加载后面的程序。 异步加载:也就是并发加载,会同时处理几个事件处理程序。 举个生活中的例子: 早上起床,先刷牙,再烧水,等水烧开了洗脸,再整理发型.是同步 ...

qq_43955202的博客 5247

js异步调用几种方法

Ext.Ajax.request({url:urlStr,params:paramsObj,method:'POST',success:function(response){if(c...

weixin_30617561的博客 234

html语言异步调用,javascript处理异步的几种方法介绍

javascript语言的执行环境是单线程(single thread),就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯;但是只要耗时比较多,假如有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。为了解决这个问题,Javascript语言将任务的执行模式分成两种:同步(Sy...

weixin_32115669的博客 630

JS调用后台方法大全

JS调用后台方法大全

dz45693的专栏 6700

你不懂js系列学习笔记-异步与性能- 02

第二章:回调 原文:You-Dont-Know-JS 主要理解 “回调地狱(callback hell)”痛苦的点到底是哪,以及尝试拯救回调。 1. 首先从实际生活中模拟 我相信大多数读者都曾经听某个...

weixin_39037804的博客 151

js中的异步调用php,JavaScript 异步调用实例分析

本文主要通过一个小小题目逐步走进javascript 异步调用问题,本文附有解答过程,感兴趣的朋友一起看看吧,希望能帮助到大家更好掌握JavaScript 异步调用。问题可修改下面的 aa() 函数,目的是在一抄后用 console.log() 输出 want-valuefunction aa() {setTimeout(function() {return "want-value";}, 100...

weixin_33856590的博客 229

JavaScript调用Applet方法,Applet异步调用远程RPC。

项目中涉及到JavaScript调用Applet方法,然后Applet远程调用Server端的service。虽然Applet已经签名,但由于JavaScript是不被JavaVM信任的,迫不得已使用异步调用remote API。远程API使用Hessian实现的。1。被JavaScript调用的Applet方法    public String deleteFaceId(String f

Ben的专栏 2233

JS如何返回异步调用的结果?

这个问题认为是所有从后端转向前端开发的程序员,都会遇到的第一问题。JS前端编程与后端编程最大的不同,就是它的异步机制,同时这也是它的核心机制。为了更好地说明如何返回异步调用的结果,先看三个尝试异步调用的示例吧。函数foo尝试调用一个接口并返回其内容,但每次执行都只会返回undefiend。与上一个示例的调用一样,也只会返回undefined。毫无意外这个示例的调用结果也是undefined。为什么?

一枚热爱艺术的技术菌,分享技术,论述艺术感悟。博客:艺述论。 5384

浅析JS异步调用机制

JS是单线程的,单线程是指在事件队列中,每次只执行一个事件,如果设计成多线程模式,DOM之间会存在资源竞争。 首先,我们要了解浏览器内核的线程,由多个线程组成浏览器的渲染进程,共同渲染出页面。 各线程作用如下: GUI(图形用户界面)渲染线程 渲染界面:解析HTMl,CSS,构建DOM树,Render树,布局和绘制。重绘或有回流时执行。 JS引擎线程 ...

qq_42248955的博客 554

JavaScript实现异步调用例子

JavaScript实现异步调用例子 ====================== js部分: var url = "/servlet/AjaxCheckCallListServlet?assignCallIdList="+assignCallIdStr; var checkResult = ""; $.ajax({ async : false, //false表示同步,true表

牧海归来 746

android 异步调用函数,Android与JS之间跨平台异步调用实例详解

Android与JS之间跨平台异步调用为什么突然要搞这个问题呢?在开发浏览器的时候遇到这个狗血的问题,花了将近1天的时间才想到这个解决方案,Android与JavaScirpt互调。因为接口是抓取的别人的,所以出现了JS跨域问题,Android闪亮登场搞定了。GIF动画演示WebView相关设置WebSettings mWebSettings = getSettings();mWebSetting...

weixin_34732699的博客 496

【前端开发】JS同步与异步调用,Vue2基础知识

一、JS同步与异步调用 1、异步调用函数:使用回调函数实现异步调用 2、使用 Promise 实现异步调用: 3、使用 async/await 实现异步调用: 二、Vue2基础知识 1、基本概念 & dom中常用的v指令 2、vue2的实例 & 数据绑定(先#el,再v-bind) 3、Vue2的组件 & 模板 (template, script, export default) 3、生命周期钩子 4、Vue2父子组件传值(Props,$emit) 5、Vue2组件引用(ref, $, this等符号)

小哈里的博客 3004

方法 A 等方法 B 执行完再执行 叫同步调用还是异步调用 JS 默认是同步调用还是异步调用

方法 A 等方法 B 执行完再执行 叫同步调用还是异步调用 JS 默认是同步调用还是异步调用

道友 316

关于js异步调用的猜想

js 进行网络异步调用大家都知道,核心是XMLHTTPRequest 对象.通过此对象可以跟服务器交互.但是异步在js 里面是如何实现的呢?异步调用:当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。同步调用:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.举个栗子:同步调用:下班回家,要先用钥匙开门,然后才能进入房间

Johnson的专栏 419

javascript中的异步调用

假设 cN() 是同步返回 “abc123”,那 Promise.resolve 会立刻变成一个 resolved 状态的 Promise,事件循环到微任务阶段时,这个 function(n) 会被执行,n 就是 “abc123”。这个返回值会成为 .then 链中下一个 Promise 的 resolve 值,也就是说 beforeSend 最终返回的,是一个 Promise,resolve 时包含带有 “Anti-Content”: n 头的请求配置。2. 如果cN是同步的,那么会直接得到返回值。

2302_80729149的博客 504

js异步调用导致的代码不雅

先上一段代码:       // add event to delete button on(deleteButton, 'click', lang.hitch(this, function() { // avoid duplicate click deleteButton.set('d...

153
上一篇: 异步加载JS
下一篇: 解决WebService 测试窗体只能用于来自本地计算机的请求
韩丽
博客等级 码龄15年 5粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值