promise与异步,async函数,async函数模块化封装数据库

目录

promise与异步

同步和异步的不同

同步

异步

回调函数

promise

 Promise的特点:

promise状态

promise对象方法

then

catch

promise链式调用

Promise.all()并发方法:

async函数

async函数基本用法

用async函数模块化封装数据库


promise与异步

Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理。

同步和异步的不同

同步

当前调用发出之后在没有得到结果之前后续代码不能执行,后续代码一直处于在线等待状态,同步是阻塞的。

代码演示:(1)使用alert介绍同步阻塞

 <script>
        //同步代码:
         console.log(111);
         demo();

         function demo() {
             console.log(222);
            alert('Hello');
         }

         console.log(333);
    </script>

异步

当前调用发出之生在没有得到结果之前后续代码可以执行,当前调用的结果会通知、回调函数等方式告诉调用者,异步是非阻塞。

常见的应用场景:(1)网络请求(2)读取文件(3)js中的事件函数就是非常典型的异步表现形式。

代码演示:使用定时器模拟异步感受异步编程的特点。

 
   console.log(11);
        test();

        function test() {
            setTimeout(() => {
                console.log(22);
            }, 2000);
        }
        console.log(33);


//异步代码:
        console.log(11);

        let fn = function(d) {
            console.log(d, 888);
        }
        test(fn);

        function test(calls) {
            //console.log(calls);
            setTimeout(() => {
                // console.log(22);
                //需求:返回22
                calls(22);
            }, 2000);
        }
        console.log(33);

回调函数

在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况被称为回调地狱(或回调)。而往往一些异步操作需要使用回调函数拿到结果

优化前

fn1( function(买彩票){
		fn2( function(中奖){
			fn3( function(还房贷){

			} )
		} )
	} )

优化后

async function(){
    const res1 = await 买了彩票
    const res2 = await 中了特等奖500万,等待领奖
    const res3 = await 去还房贷
}

        //需求:查询某个类别下的所有三级类别

        //查询所有一级类别:
        $.get('/firstcate', function(d) {
            //d为所有一级类别

            //查询某一级类别下面的所有二级类别
            $.get('/second', {
                secid: d[i].firsitId
            }, function(d2) {
                //d2为某个一级类别下面的所有二级类别

                //查询某个二级类别下面所有的三级类别
                $.get('/thired', {
                    thirid: d2[1].secondId
                }, function(d3) {

                    //d3为某个二级类别下面的所有三级类别
                });
            });
        });

promise

Promise(许诺) 是异步编程的一种解决方案,就是一个容器,里面保存着某个未来才会结束的事件。

Promise是异步编程解决方案之一, Promise实际上是一个许诺器,Promise里面通常放的是将来要执行的异步代码,而这些异步代码执行完成后会有两种结果:成功或失败,因此Promise有三种状态:pending(初始状态)、fullfilled/resolved(成功状态)、rejected(失败状态)。当我们在Promise内部调用了成功时的回调函数(resolve()方法)时将Promise的初始状态转换成成功状态,并且执行在then()方法中定义的成功时的回调函数;当我们在Promise内部调用了失败时的回调函数(reject()方法)时将Promise的初始状态转换成失败状态,并且执行在then()方法中或catch()方法中定义的失败时的回调函数

语法

new Promise( (resolve,reject)=>{
        //  resolve()
    	//  reject()
} )
<script>

        // console.log(11);
        //resolve:成功时要执行的回调函数
        //reject:失败时要执行的回调函数
        let prm = new Promise((resolve, reject) => {
            // console.log(resolve, 888);
            // console.log(reje
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值