JS异步 *** 作新体验之 async函数

JS异步 *** 作新体验之 async函数,第1张

文章来自 https://wwwcnblogscom/rogerwu/p/10784236html

async 函数返回一个 Promise 实例对象,可以使用 then 方法添加回调函数。

当函数执行时,一旦遇到 await 就会先返回,等到异步 *** 作完成,再接着执行函数体内后面的语句

(1)、async 函数内部 return语句返回的值,会成为then方法回调函数的参数

(2)、async 函数内部抛出错误,会导致返回的 Promise对象变成reject状态,抛出的错误会被catch方法回调函数接收到

(3)、只有 async 函数内部的异步 *** 作执行完,才会执行 then方法指定的回调函数

实际应用

关于js回调函数,自己之前了解过,但是概念不是很清晰了,这里重新找几篇博客回顾一下概念,整理的感觉比较好的几个博客的总结的概念。方便复习。

js中的回调函数的理解:回调函数就是传递一个参数化函数,就是将这个函数作为一个参数传到另外一个主函数里面,当那个主函数执行完之后,再执行传递过去的函数,走这个过程的参数化的函数,就叫回调函数,换个说法也就是被作为参数传递到另一个函数(主函数)的那个函数就叫做回调函数。

回调函数:函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。,这句话的意思是函数b以一个参数的形式传入函数a并执行,顺序是先执行a ,然后执行参数b,b就是所谓的回调函数。

function a(callback){

alert('a');

callbackcall(this);//或者是 callback(), callbackapply(this),看个人喜好

}

function b(){ // 为回调函数。

alert('b');

}

//调用

a(b);

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

js中的回调函数:官方解释,当程序跑起来的时候,一般情况下,应用程序会时常通过API调用库里的所先预备好的函数,但是有些库函数,却要求应用先传给它的一个函数,好在适合的时候调用,以完成目标任务。这个被传入的,后又被调用的函数成为回调函数。

通常将一个函数B传入另外一个函数A,并且在需要的时候调用A,说白了就是回溯函数,先定义好将要使用的函数体,饭后在使用在调用这个函数我们通常把callback作为一个参数传入定义的那个函数。下面我们看一段实现这个效果的js代码。

function Buy(name,goods1,callback) {

alert(name+' buy '+goods1);

if(callback&&typeof(callback)==="function")

callback();

}

Buy('xiaoming','apple',function(){

alert("shopping finish");

});

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

一个简单的代码,一开始不知道要买啥,等到买东西的时候,立即把之前定义好的函数调用出来,最好加上判断,因为一切的前提是callback必须是一个函数,输出结果为:

xiaoming buy apple

shopping finish

1

2

1

2

这样应该能理解什么是回调函数了吧。

打开CSDN,阅读体验更佳

JS中的 回调函数(callback)_前端小草籽的博客_js回调函数

1什么是回调函数(callback)呢 把函数当作一个参数传到另外一个函数中,当需要用这个函数是,再回调运行()这个函数 回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。

JS中什么是回调函数_路过的假面骑士dcd的博客

参数可以拿来用,你也可以不用。形参,形式上的参数,并没有实际意义,只是帮你完成函数内部逻辑运算而设置的。 回调函数:被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。 functiongreeting(name){

JS回调函数——简单易懂有实例

 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数。什么是JS?() 下面先看看标准的解释: <script language="javascript"> 02 function SortNumber( obj, func ) // 定义通用排序函数 03 { 04 //

继续访问

浅析JS中回调函数及用法

主要介绍了JS中回调函数及用法,通过实例代码给大家详细介绍了什么是回调函数,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

JS回调函数(callback)

浅谈JS回调函数

继续访问

JS中的 回调函数(callback)

目录1什么是回调函数(callback)呢?2回调函数有哪些特点?3回调函数中this的指向问题4为什么要用到回调函数?5回调函数和异步 *** 作的关系是什么?回调函数是异步么?把函数当作一个参数传到另外一个函数中,当需要用这个函数是,再回调运行()这个函数回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。(作为参数传递到另外一个函数中,这个作为参数的函数就是回调函数)理解:函数可以作为一个参数传递到另外一个函数中。 分析:add(1,

继续访问

js之回调函数

回调函数 回调函数被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。 一个简单的例子 <script type="text/javascript"> windowonload = function(){ // 回调函数 function a(m){ return m+m; } consolelog(a(3));//6 返回一个数据 consolelog(a);//f a(m){return m+n} 返

继续访问

<Zhuuu_ZZ>HIVE(十一)函数

Hive内置函数一 Hive函数分类二 字符函数二 类型转换函数和数学函数三 日期函数四 集合函数五 条件函数六 聚合函数和表生成函数61 聚合函数62 表生成函数:输出可以作为表使用 一 Hive函数分类 从输入输出角度分类 标准函数:一行数据中的一列或多列为输入,结果为单一值 聚合函数:多行的零列到多列为输入,结果为单一值 表生成函数:零个或多个输入,结果为多列或多行 从实现方式分类 内置函数 自定义函数 UDF:自定义标准函数 UDAF:自定义聚合函数 UDTF:自定义表生成函数

继续访问

常见的开窗函数

开窗函数与聚合函数计算方式一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值,开窗函数可以为每组返回多个值。 开窗函数的语法为:over(partition by 列名1 order by 列名2 ),括号中的两个关键词partition by 和order by 可以只出现一个。over() 前面是一个函数,如果是聚合函数,那么order by 不能一起使用。 开窗函数主要分为以下两类: 窗口函数OVER()指定一组行,开窗函数计算从窗口函数输出的结果集中各行的值。

继续访问

开窗函数总结

421,表的数据 423,开窗函数查询 1,结果如下: 2,结果如下,可以参照这个结果进行理解rows和range的区别 3,结果如下,可以用于获取当前数据行的 上次登录时间 的需求 4,结果如下,结合lead()函数 可以获取用户 上次登录时间与下次登录时间的 需求 5,结果如下,可以用于指定时间内最新或最旧数据的需求。 6,结果如下,可用于求比例的需求 7,结果如下: 7,结果如下: 8,结果如下 9,结果如下: ,10,结果

继续访问

热门推荐 python中def用法

一、函数调用的含义 函数是类似于可封装的程序片段。允许你给一块语句一个名字,允许您在你的程序的任何地方使用指定的名字运行任何次数。 python中有许多内置函数,如len和range。 函数概念可能是任何有价值软件中最重要的块(在任何编程语言中)。 二、定义函数使用def关键字 在这个关键字之后是标识函数的名字; 其次是在一对括号中可以附上一些变量名; 最后在行的末尾

继续访问

python map函数的作用_python语言基础之map函数,urlibrequest,多线程

1map函数map 是 Python 自带的内置函数,它的作用是把一个函数应用在一个(或多个)序列上,把列表中的每一项作为函数输入进行计算,再把计算的结果以列表的形式返回。map 的第一个参数是一个函数,之后的参数是序列,可以是 list、tuple。当 map 中的函数为 None 时,结果将会直接返回参数组成的列表。(python3中去掉了None,会报错)lst_1 = (1,2,3,4,

继续访问

JS中什么是回调函数?

对于刚学JS的初学者来说(包括我现在的自己),对于这个回调函数真的是踩坑无数,于是乎想作为一个淋过雨的人,想为后面刚入门的人打一把伞。 本文不会用专业的知识词汇,只会用口语来简单让你有一个概念帮你浅浅的理解这个名词,如果你是一个学习JS刚遇到这个名词,正处于一脸懵逼的状态,那么本文对于会有帮助,但如果你想要研究更深层次的原理,用法和含义,可能本文不适合你。 废话不多说,让我们先看MDN的解释。 这段话,首先我们要搞懂一个东西,什么是实参。 我们都知道,函数可以接受参数,形参和实参。那么什么是

继续访问

js回调函数的两种写法

回调函数 应用程序时常会通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。 总结一下回调函数的两种写法与用法: 非参数回调函数: 这种回调比较简单 ,往往只需传一个函数名就可以。 function demo(arg,callback){ } 再来看看怎么写这个函数 在js中是可以通过函数名来调用函数的 例如: var

继续访问

一句话攻略彻底理解JS中的回调(Callback)函数

回调函数

继续访问

SQL开窗函数(窗口函数)详解

一、什么是开窗函数 开窗函数/分析函数:over() 开窗函数也叫分析函数,有两类:一类是聚合开窗函数,一类是排序开窗函数。 开窗函数的调用格式为: 函数名(列名) OVER(partition by 列名 order by列名) 。 如果你没听说过开窗函数,看到上面开窗函数的调用方法,你可能还会有些疑惑。但只要你了解聚合函数,那么理解开窗函数就非常容易了。 我们知道聚合函数对一组值执行计算并返回单一的值,如sum(),count(),max(),min(), avg()等,这些函数常与grou

继续访问

最新发布 Python中很常用的函数map(),一起来看看用法

Python2中map直接返回作用后的元素的列表 Python3中map返回的则是一个map对象 如果想得到列表对象,则还需要调用list转化为列表对象 Python2中,map()函数的 function 可以为None,如map(iterable1,iterable2[,[,iterable n),其作用类似于将iterable中的对应索引的值取出作为一个元组,最终返回一个包含多个元组的列表。而Python3中,不指定 function,就会报错。

继续访问

Oracle分析函数Over()

一、Over()分析函数 说明:聚合函数(如sum()、max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录。若想对于某组返回多行记录,则需要使用分析函数。 1、rank()/dense_rank over(partition by order by ) 说明:over()在什么条件之上; partition by 按哪个字段划分组; 

继续访问

mysql开窗函数有哪些_mysql开窗函数

开窗函数:它可以理解为记录集合,开窗函数也就是在满足某种条件的记录集合上执行的特殊函数。对于每条记录都要在此窗口内执行函数,有的函数随着记录不同,窗口大小都是固定的,这种属于静态窗口;有的函数则相反,不同的记录对应着不同的窗口,这种动态变化的窗口叫滑动窗口。开窗函数的本质还是聚合运算,只不过它更具灵活性,它对数据的每一行,都使用与该行相关的行进行计算并返回计算结果。开窗函数和普通聚合函数的区别聚合

继续访问

SQL:开窗函数(窗口函数)

4、 窗口函数 目录4、 窗口函数41 排序窗口函数rank42 rank(), dense_rank(), row_number()区别43 、排序截取数据lag(),lead(),ntile(),cume_dist()44 聚合函数作为窗口函数44、over(- - rows between and ) 简单理解,就是对查询的结果多出一列,这一列可以是聚合值,也可以是排序值。 开窗函数一般就是说的是over()函数,其窗口是由一个 OVER 子句 定义的多行记录 开窗函数一般分为两类,

继续访问

开窗函数(分析函数)使用详解

开窗函数 简介 开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决。目前在 MSSQLServer、Oracle、DB2 等主流数据库中都提供了对开窗函数的支持,MySQL80支持。 57 --> 80 开窗函数简介:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个

继续访问

敲黑板啦!开窗函数你学会了吗

特征分析与偏移分析什么是开窗函数?学习目标:1、累计计算窗口函数(1)sum(…) over(……)(2)avg(…) over(……)(3)语法总结:2、分区排序窗口函数3、分组排序窗口函数4、偏移分析窗口函数练习总结: 什么是开窗函数? 开窗函数用于为行定义一个窗口(这里的窗口是指运算将要 *** 作的行的集合),它对一组值进行 *** 作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回

继续访问

function doAjax(u,param,callback){

$ajax({

type:'POST',

url:u,

data:param,

success:callback

});

}

function showAlert(data,test1,test2){

alert(data+" "+test1+" "+test2);

}

windowonload = doAjax("serverphp","id=12&type=1",function(data){showAlert(data,3,5)});

执行doAjax的时候,回调函数的调用改一下就可以了。

测试过没问题。

函数对象:将函数作为对象使用时,简称函数对象

实例对象:new函数产生的对象,简单对象

()的左边是函数

的左边是对象

1、函数是自己定义的

2、自己不会主动调用该函数,但最终会执行

回调函数 不会 放到队列

回调函数 放到队列, 将来执行

怎么判断同步回调还是异步回调函数?

如上面示例,在启动了回调函数后面 consolelog(xxx)

启动回调函数->回调函数执行完成->consolelog(xxx) 说明是同步回调

启动回调函数->consolelog(xxx)->回调函数执行完成 说明是异步回调, 先启动了回调函数,不会立刻执行,启动不代表立刻执行

函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回;

因为函数在Javascript中是第一类对象,我们像对待对象一样对待函数,因此我们能像传递变量一样传递函数,在函数中返回函数,在其他函数中使用函数。当我们将一个回调函数作为参数传递给另一个函数是,我们仅仅传递了函数定义。我们并没有在参数中执行函数。我们并不传递像我们平时执行函数一样带有一对执行小括号()的函数。

像之前的例子一样,第一种方法就是匿名函数作为回调(使用了参数位置定义的匿名函数作为回调函数)。第二种方式就是命名函数作为回调(定义一个命名函数并将函数名作为变量传递给函数)

回调函数概念:    函数的参数callback是另一个参数,这个参数在原始数据中执行

例如:

  let arr = [11, 22, 33, 44, 55, 66, 77, 88, 99]

    function liFor(arr, callback) {

        for (let i = 0; i < arrlength; i++) {

            if (callback(arr[i])) {

                consolelog(arr[i]);

            }

        }

    }

    consolelog('---------遍历数组----------');

    liFor(arr, val => true)

    consolelog('---------输出奇数----------');

    liFor(arr, val => val % 2 !== 0)

    consolelog('---------输出被3整除----------');

    liFor(arr, val => val % 3 === 0)

    consolelog('---------输出被3和6整除----------');

    liFor(arr, val => val % 3 === 0 && val % 6 === 0)

闭包函数概念:定义一个a方法,在a方法中定义一个b方法,并且b方法里面用到了a方法里面定义的变量,那么此时就形成了闭包函数,由于内部方法里面,用到外部方法里面的变量,外部方法里面的那个变量会一直在内存中存保存着。两个方法嵌套定义,里面的方法,用到了外面方法里面定义的变量,此时这两个方法就形成了闭包。

例如:

function a() {

            consolelog('a函数被调用了');

            let num1 = 100

            let num2 = 200

            function b() {

                consolelog('b函数被调用了');

                consolelog(num1 + num2);

            }

            //返回的返回值也是一个函数,那么a函数就是高阶函数。

            return b

        }

        // 通常情况下,函数执行完成后,函数里面定义的变量,会被销毁。

        // a函数,已经调用完毕了,但是a函数里面定义变量,始终在内存中,因为b函数中用到了a函数中定义的变量。

        // 那么此时这两个函数,就称之为:闭包函数。

        let c = a()

        c()

        consolelog('------------------------------------------');

        // 闭包函数的实际案例

        function calc(num1, num2, type) {

            switch (type) {

                case '+':

                    consolelog(`${num1}+${num2}=${num1 + num2}`);

                    break;

                case '-':

                    consolelog(`${num1}-${num2}=${num1 - num2}`);

                    break;

            }

        }

        // 在实际开发中,我们在做num1和num2的计算之前,可能需要先做其他事情

        let num1 = 100

        let num2 = 50

            // 在做其他事情的过程中,我们的数据很有可能会被篡改。

        consolelog('查看用户是否登录');

        num1 = 555

        num2 = 145

        consolelog('检查用户的权限');

        calc(num1, num2, '+') //运行结果不对,因为变量的值被篡改了。

        consolelog('------------------------------------------');

        // 定义一个闭包函数,实现计算器功能

        function myCalc(num1, num2, type) {

            switch (type) {

                case '+':

                    return function() {

                        return num1 + num2

                    }

                case '-':

                    return function() {

                        return num1 - num2

                    }

            }

        }

        //先准备好你的数据

        let n1 = 100

        let n2 = 50

            //将你的数据传给计算器方法,由计算器方法,返回一个计算方法。

        let js = myCalc(n1, n2, '+')

            //在做具体的计算之前,还先做些其他的事情

        consolelog('查看用户是否登录');

        n1 = 555

        n2 = 145

        consolelog('检查用户的权限');

        //其他事件准备好了后,执行计算方法

        consolelog(js());

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11677143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存