国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

async await詳解

Shimmer / 3105人閱讀

摘要:本身就是的語法糖。類似于后面代碼會等內(nèi)部代碼全部完成后再執(zhí)行打印結(jié)果操作符用于等待一個對象。它只能在異步函數(shù)中使用。參考附在版本位中是可以直接使用的。持續(xù)更新中來點顆吧

async await本身就是promise + generator的語法糖。

本文主要講述以下內(nèi)容

async awiat 實質(zhì)

async await 主要特性

async await 實質(zhì)

下面使用 promise + generate 實現(xiàn) async await

    // 轉(zhuǎn)換目標(biāo) async1
    // async function async1() {
    //    console.log("async1 start");
    //    await async2();
    //    console.log("async1 end");
    // }

    function async1() {
        // 將 async 轉(zhuǎn)換成 *,將 awiat 轉(zhuǎn)換成 yield
        var awaitInstance = (function* () {
            console.log("async1 start");
            yield async2();
            console.log("async1 end");
        })()

        // 自動執(zhí)行 await 及后續(xù)代碼
        // 簡單起見,不處理異常情況
        function step() {
            var next = awaitInstance.next();
            // 使用Promise獲取 異步/同步 方法的結(jié)果,再執(zhí)行下一步
            Promise.resolve(next.value).then(function (val) {
                if (!next.done) step();
            })
        }
        step();

        // 返回Promise
        return Promise.resolve(undefined);
    }
async await 特性

async 一定會返回 promise

    // 案例1: 不設(shè)置return
    async function fn() {}
    fn().then(alert); // alert -> undefined

    // 案例2:return非promise
    async function f() {
        return 1
    }
    f().then(alert); // alert -> 1

    // 案例3: return Promise
    async function fn() {
        return Promise.resolve(2);
    }
    fn().then(alert); // alert -> 2

async 中代碼是直接執(zhí)行的(同步任務(wù))

    console.log(1);

    async function fn() {
        console.log(2);
        await console.log(3)
        console.log(4)
     }
    fn();

    console.log(5);

    // 打印 1 2 3 5 4
    // 為何后面是 3 5 4 ? 往下看

await是直接執(zhí)行的,而await后面的代碼是 microtask。

    async function async1() {
        console.log("async1 start");
        await async2();
        console.log("async1 end");
    }

    // 類似于
    async function async1() {
        console.log("async1 start");
        Promise.resolve(async2()).then(() => {
            console.log("async1 end");
        })
    }

await后面代碼會等await內(nèi)部代碼全部完成后再執(zhí)行

    async function async1() {
        console.log("async1 start");
        await async2();
        console.log("async1 end");
    }

    async function async2() {
        return new Promise(function(resolve) {
            setTimeout(function() {
                console.log("sleep 2s");
                resolve("do");
            }, 2000)
        })
    }

    async1();

    // 打印結(jié)果
    // async1 start -> sleep 2s -> async1 end

await 操作符用于等待一個Promise 對象。它只能在異步函數(shù) async function 中使用。參考 MDN

    附:
    在chrome版本 73.0.3683.86(64 位)中,
    await是可以直接使用的。

    var x = await console.log(1)
End
持續(xù)更新中 來Github 點顆?吧

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/54795.html

相關(guān)文章

  • async await詳解

    摘要:本身就是的語法糖。類似于后面代碼會等內(nèi)部代碼全部完成后再執(zhí)行打印結(jié)果操作符用于等待一個對象。它只能在異步函數(shù)中使用。參考附在版本位中是可以直接使用的。持續(xù)更新中來點顆吧 async await本身就是promise + generator的語法糖。 本文主要講述以下內(nèi)容 async awiat 實質(zhì) async await 主要特性 async await 實質(zhì) 下面使用 pro...

    KavenFan 評論0 收藏0
  • async await詳解

    摘要:本身就是的語法糖。類似于后面代碼會等內(nèi)部代碼全部完成后再執(zhí)行打印結(jié)果操作符用于等待一個對象。它只能在異步函數(shù)中使用。參考附在版本位中是可以直接使用的。持續(xù)更新中來點顆吧 async await本身就是promise + generator的語法糖。 本文主要講述以下內(nèi)容 async awiat 實質(zhì) async await 主要特性 async await 實質(zhì) 下面使用 pro...

    yedf 評論0 收藏0
  • async/await 執(zhí)行順序詳解

    摘要:怎么處理返回值輸出結(jié)果從結(jié)果中可以看到函數(shù)返回的是一個對象,如果在函數(shù)中一個直接量,會把這個直接量通過封裝成對象。如果函數(shù)沒有返回值結(jié)果結(jié)果返回。 隨著async/await正式納入ES7標(biāo)準(zhǔn),越來越多的人開始研究據(jù)說是異步編程終級解決方案的 async/await。但是很多人對這個方法中內(nèi)部怎么執(zhí)行的還不是很了解,本文是我看了一遍技術(shù)博客理解 JavaScript 的 async/a...

    derek_334892 評論0 收藏0
  • asyncawait詳解

    摘要:異步函數(shù)是和的組合,基本上,它們是對的更高級別的抽象。引入的原因它們降低了對一些固定語法樣板的要求,打破了鏈?zhǔn)讲荒芮袛噫準(zhǔn)降南拗啤R雭斫鉀Q著名的回調(diào)地獄問題,但是因為他們自身的復(fù)雜性,引入了更復(fù)雜的語法。 1、簡介 需先了解 Promise 【鏈接地址】 JavaScript 中的異步函數(shù)方法。 JavaScript 在很短的時間內(nèi)從回調(diào)演變?yōu)?Promises ,從 ES2...

    Simon_Zhou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<