电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue中同步方法的實(shí)現(xiàn)

瀏覽:72日期:2022-06-10 11:50:49
目錄
  • vue同步方法實(shí)現(xiàn)
    • 有三種實(shí)現(xiàn)方式
  • vue中的同步和異步問題
    • 同步
    • 異步
  • 總結(jié)

    vue同步方法實(shí)現(xiàn)

    有三種實(shí)現(xiàn)方式

    1、axios本身屬于Promise

    利用函數(shù)式的then獲取請(qǐng)求返回結(jié)果,也是最常用的,如下:

    ?request({
    ? ? ? ? url: "/test/XXX/XXXX",
    ? ? ? ? method: "post",
    ? ? ? ? data: param
    ? ? ? }).then(ret => {
    ? ? ? ? if (ret.code === RESULT_CODE.SUCCESS) {
    ? ? ? ? ? this.$message.success("保存成功")
    ? ? ? ? }
    ? ? ? })

    此處request對(duì)象是對(duì)axios做了一層封裝,不用在意。此種方式的缺陷是:只能用于請(qǐng)求返回后只有簡(jiǎn)單操作的情形。

    如果返回后的操作比較多,代碼就會(huì)顯得臃腫,可讀性差,還有一種情況,即該請(qǐng)求被調(diào)用的情況,由于axios沒有配置為同步請(qǐng)求的配置項(xiàng),因此無法直接將上述代碼封裝后直接調(diào)用,因此,引申出第二種方法:

    2、async結(jié)合await

    // api.js文件
    // test1方法作為被調(diào)用方,被test1方法調(diào)用
    export async function test1 (param) {
    ? ? // 返回一個(gè)Promise對(duì)象,真正需要返回給調(diào)用方的數(shù)據(jù),放在resolve中
    ? ? return new Promise(resolve => {
    ? ? ? ? // request對(duì)象是對(duì)axios的封裝,不用在意
    ? ? ? ? request({
    ? ? ? ? ? ? url: "/emr/order/deleteOrder",
    ? ? ? ? ? ? method: "post",
    ? ? ? ? ? ? data: order
    ? ? ? ? }).then(ret => {
    ? ? ? ? ? ?resolve(ret.data)
    ? ? ? ? }
    ? ? ? })
    ? ? })
    }
    // VUE文件
    methods: {
    ? ? // test2作為調(diào)用方調(diào)用test1方法
    ? ? async test2 (param) {
    ? ? ? ? const data = await test1(param)
    ? ? }
    }

    3、引入jquery

    此處就不寫了,這種方式感覺挺沒追求的。

    vue中的同步和異步問題

    同步

    在主線程上排隊(duì)之行的任務(wù),只有在最前面的任務(wù)執(zhí)行完成之后,才之行后面的任務(wù)。

    (生活中的例子話糙理不怪:銀行排隊(duì),只有一個(gè)窗口的時(shí)候,A業(yè)務(wù)辦理完在接著辦理B)

    異步

    是指不進(jìn)入主線程,而是進(jìn)入了“任務(wù)隊(duì)列”的任務(wù),只有“任務(wù)隊(duì)列”通知主線程,某個(gè)異步任務(wù)可執(zhí)行了,該任務(wù)才會(huì)進(jìn)入主線程執(zhí)行。

    (生活中的例子話糙理不怪:多個(gè)窗口,可以同時(shí)辦理業(yè)務(wù),互不影響) 

    • 同步的優(yōu)點(diǎn)是:同步是按照順序一個(gè)一個(gè)來,不會(huì)亂掉,更不會(huì)出現(xiàn)上面代碼沒有執(zhí)行完就執(zhí)行下面的代碼,
    • 缺點(diǎn):是解析的速度沒有異步的快;
    • 異步的優(yōu)點(diǎn)是:異步是接取一個(gè)任務(wù),直接給后臺(tái),在接下一個(gè)任務(wù),一直一直這樣,誰的先讀取完先執(zhí)行誰的,
    • 缺點(diǎn):沒有順序 ,誰先讀取完先執(zhí)行誰的 ,會(huì)出現(xiàn)上面的代碼還沒出來下面的就已經(jīng)出來了,會(huì)報(bào)錯(cuò);

    異步任務(wù)分為:宏任務(wù)   微任務(wù)

    • 宏任務(wù):包含整體代碼script /  setTimeout /  setInterval
    • 微任務(wù):Promise.then(非new Promise) / process.nextTick(node中)

    事件執(zhí)行順序:

    • 1.先執(zhí)行宏任務(wù),在執(zhí)行微任務(wù)
    • 2.微任務(wù)根據(jù)先進(jìn)先出的順序執(zhí)行
    • 3.微任務(wù)清空后在執(zhí)行宏任務(wù)
    • 4.按先進(jìn)先出的順序取出執(zhí)行

    Promise 實(shí)現(xiàn)異步調(diào)用

    asnyc/await 實(shí)現(xiàn)同步調(diào)用

       // 項(xiàng)目中使用的事例:Vue接口請(qǐng)求異步變同步
        created() {
    this.initData();
        }
        methods: {
    async initData() {
        let res = await getList(this.params);
        if (res.message === "成功") {
    this.resultList = res.data;;
        }
    }
        }
    // 異步請(qǐng)求同步的方法
        handleClick() {
    return new Promise((resolve,reject) => {   //resolve 成功 ,reject 失敗
        getRequest().then(res => {
    //操作1
    resolve();
        }).catch(error =>{
    console.log(error)
    reject()
        })
    })
        },
        test(){
    Promise.all([this.handleClick()]).then(res=>{
        //操作2
    })
        }
        // promise的操作
        const promise = new Promise(function(resolve, reject){
    if(一步操作成功){
        resolve(value);
    }else{
        reject(error);
    }
        })
        // 異步操作
        new Promise((resolve, reject) => {
    resolve(1);
    console.log(2);
        }).then(r => {
    console.log(r);
        });
        // 2
        // 寫法一
        const promise = new Promise(function(resolve, reject) {
    try {
        throw new Error("test");
    } catch(e) {
        reject(e);
    }
        });
        promise.catch(function(error) {
    console.log(error);
        });
        // 寫法二
        const promise = new Promise(function(resolve, reject) {
    reject(new Error("test"));
        });
        promise.catch(function(error) {
    console.log(error);
        });

    總結(jié)

    以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持。

    標(biāo)簽: JavaScript
    主站蜘蛛池模板: 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 智能终端_RTU_dcm_北斗星空自动化科技 | 选宝石船-陆地水上开采「精选」色选机械设备-青州冠诚重工机械有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 石英砂矿石色选机_履带辣椒色选机_X光异物检测机-合肥幼狮光电科技 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 翰香原枣子坊加盟费多少钱-正宗枣核糕配方培训利润高飘香 | 塑钢件_塑钢门窗配件_塑钢配件厂家-文安县启泰金属制品有限公司 深圳南财多媒体有限公司介绍 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 真空包装机-诸城市坤泰食品机械有限公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 光环国际-新三板公司_股票代码:838504 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 周口风机|周风风机|河南省周口通用风机厂 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 |