色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

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

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

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

    1、axios本身屬于Promise

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

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

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

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

    2、async結(jié)合await

    // api.js文件
    // test1方法作為被調(diào)用方,被test1方法調(diào)用
    export async function test1 (param) {
    ? ? // 返回一個Promise對象,真正需要返回給調(diào)用方的數(shù)據(jù),放在resolve中
    ? ? return new Promise(resolve => {
    ? ? ? ? // request對象是對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中的同步和異步問題

    同步

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

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

    異步

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

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

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

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

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

    事件執(zhí)行順序:

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

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

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

       // 項目中使用的事例:Vue接口請求異步變同步
        created() {
    this.initData();
        }
        methods: {
    async initData() {
        let res = await getList(this.params);
        if (res.message === "成功") {
    this.resultList = res.data;;
        }
    }
        }
    // 異步請求同步的方法
        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é)

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

    標(biāo)簽: JavaScript
    主站蜘蛛池模板: 男人天堂网在线观看 | 男女男精品视频免费观看 | 亚洲 中文 欧美 日韩 在线人 | 欧美无玛 | 米奇精品一区二区三区 | 国产精品久久久久国产精品三级 | 久久综合九九亚洲一区 | 国产三级香港在线观看 | 亚洲国产专区 | 色综合天天综合网看在线影院 | 国产草草影院ccyycom软件 | 久久受www免费人成看片 | 日韩国产欧美在线观看一区二区 | 99热99操99射| 国产成人tv在线观看 | 国产成人aa在线视频 | 久久久久国产精品美女毛片 | 中文字幕二区 | 国产精品日韩欧美一区二区 | 日韩国产免费一区二区三区 | 风流慈禧一级毛片在线播放 | 午夜剧场福利社 | 国产一级高清视频 | 久久网免费 | 狠狠色婷婷丁香综合久久韩国 | 日本aaaaa毛片动漫 | 欧美在线一级毛片视频 | 国产成人刺激视频在线观看 | 欧美国产精品不卡在线观看 | 草草视频在线观看最新 | 99精品国产综合久久久久 | 亚洲欧洲国产成人综合一本 | 精品免费久久久久欧美亚一区 | 精品视频99 | 国产视频www | 成人ab片 | 国产免费高清在线精品一区 | 亚洲高清国产品国语在线观看 | 欧美性狂猛bbbbbbxxxxxx | 国产三级做爰高清在线 | 中文字幕一区二区在线观看 |