首页 > 编程语言 >异步编程

异步编程

时间:2022-11-05 17:33:42浏览次数:41  
标签:异步 target 编程 let Promise getData fn

同步与异步

同步:做完一件事才能做下一件事
异步:可同时做好几件事,且互不影响

一般程序都是从上往下的同步运行

程序按顺序执行

setTimeout就是个常用的异步方法

程序不按顺序执行,且互不干扰,2是50秒后发送,假设2的代码出现问题,也不会影响其他的数字正常打印

异步的问题

异步获取数据

    <script>
        let target = "hello";//数据
        function getData(){//获取数据的方法
            setTimeout(() => {//模拟异步
                return target;//return只能返回同步的数据
            },500);
        }
        let result = getData();
        console.log(result);//undefined
        /*因为getData函数的return一瞬间就会返回,得到undefined*/
    </script>

方法1:回调函数

        //回调函数:将函数作为参数传给另一个函数
        let target = "hello";
        function getData(fn){//fn函数作为实参
            setTimeout(() => {
                fn(target);//target是fn的实参,返回target作为实参的fn函数的值
            },500);
        }
        getData((x) => {
            console.log(x);//hello
        });
        /*将没有名字的函数(假设为y)作为回调函数,y又作为getData的参数
        把y作为参数传给fn,x是y的形参,y的函数返回的是形参x的值
        x对应的是fn的参数target*/

方法2:Promise对象

Promise对象是专门处理异步的

        let target = "hello";
        function getData(){
            return new Promise((resolve) => {//返回一个Promise对象
                setTimeout(() => {
                    resolve(target);
                },500);
            })
        }
        let p = getData();
        p.then((data) => {
            console.log(data);//hello
        });

更多的是用人家封装好的库函数如getData,直接调用then方法

方法3:async函数

        let target = "hello";
        function getData(){
            return new Promise((resolve) => {//返回一个Promise对象
                setTimeout(() => {
                    resolve(target);
                },500);
            })
        }
        async function fun(){
            let data = await getData();//await后面跟上Promise对象
            console.log(data);//hello
        }
        fun();

await会等待Promise对象获取到结果之后才会继续执行下一个代码
而普通的function不能实现等待的效果,async具体到ajax再细说

标签:异步,target,编程,let,Promise,getData,fn
From: https://www.cnblogs.com/ben10044/p/16860654.html

相关文章

  • 《Unix/Linux系统编程》第十二章学习笔记 20201209戴骏
    第十二章、块设备I/O和缓冲区管理知识点归纳一、块设备I/O缓冲区I/O缓冲的基本原理非常简单。文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk......
  • 基础JUC高并发编程-尚硅谷
    JUC高并发编程B站地址:【尚硅谷】大厂必备技术之JUC并发编程_哔哩哔哩_bilibili参考笔记1:(119条消息)【尚硅谷】大厂必备技术之JUC并发编程——笔记总结_浙桐的博客-CSD......
  • Vue编程式路由导航、缓存路由组件、新的钩子函数
    1、编程式路由导航1.1作用不借助<router-link>实现路由跳转,让路由跳转更加灵活1.2具体编码//$router的两个APIthis.$router.push({ name:'xiangqing',......
  • 同步异步,单线程多线程
    同步:同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉,但是程序还在执行。这种情况下,用户不能关闭界面,如果关闭了,程序就中断......
  • 可编程渲染管线(Scriptable Render Pipeline, SRP)
    原文链接可编程渲染管线处理数据的流程可分为以下3大阶段1.应用阶段这个阶段大概会由CPU处理4件事情。首先会对模型数据进行可见性判断。模型数据由顶点位置、法线方......
  • 实验3 函数应用编程
     实验任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprin......
  • 实验3 C语言控制语句应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidp......
  • Linux下网络编程
    Linux下网络编程1.TCP/IP简介    TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,目的在于解决异种计算机网络的通信问题。使得网络在互联时能为用......
  • 老资源分享之《Opengl游戏编程》代码
    徐明亮教授编写、同时应该也是他翻译的《3D游戏引擎》和《游戏物理学》  这本书的代码是以光盘提供的、鉴于现在人们都不用光盘了、那么贴个百度云链接吧: 链接:http......
  • 极限编程简述
    转载:https://www.cnblogs.com/imyalost/p/7668838.html在敏捷方法中,极限编程(XP:eXtremeProgramming)是其中最著名的一个,它由一系列简单却互相依赖的实践组成。。。本篇博......