第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

網(wǎng)易云音樂(lè)數(shù)據(jù)交互—async&await實(shí)現(xiàn)版

標(biāo)簽:
大數(shù)據(jù)

webp  





今天要分享一个东西--关于ES7 async结合Fetch异步编程问题。

ES7 async/await被称作异步编程的终极解决方案,我们先不管这个称呼,咱们先总结一下,我们一路走来异步编程是如何产生,到最后如何解决的。


webp  





方案并不完美,我们通过代码来说明。

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <script>

        var a = 12;

        //模拟数据交互需要等1秒钟

        function loadData() {

            setTimeout(function () {

                a = 666;

            }, 1000)

        }

        loadData();

        console.log(a);

    </script>

</head>

<body>

</body>

</html>

不用想,这个结果就是 12 而不是666,因为程序不会等1s才往下执行,但是有时候又必须使用数据,所以只能嵌套。但是嵌套多了又会出现下面的问题,案例来自SF的朋友,特此感谢。

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <script>

        setTimeout(function () {

            console.log("第一个异步回调了!")

            setTimeout(function () {

                console.log("第二个异步回调了!")

                setTimeout(function () {

                    console.log("第三个异步回调了!")

                    setTimeout(function () {

                        console.log("第四个异步回调了!")

                        setTimeout(function () {

                            console.log("第五个异步回调了!")

                        }, 1000);

                    }, 1000);

                }, 1000);

            }, 1000);

        }, 1000);

    </script>

</head>

<body>

</body>

</html>

我特意写了一个程序,这下大家就能体会他的缺陷。

那我们怎么解决呢?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <script>

        function timeout(ms) {

            return new Promise((resolve, reject) => {

                setTimeout(resolve, ms, "finish");

            });

        }

        timeout(2000)

            .then(value => {

                console.log("第一层" + value);

                return timeout(2000);

            })

            .then(value => {

                console.log("第二层" + value);

                return timeout(2000);

            })

            .then(value => {

                console.log("第三层" + value);

                return timeout(2000);

            })

            .then(value => {

                console.log("第四层" + value);

                return timeout(2000);

            })

            .then(value => {

                console.log("第五层" + value);

                return timeout(2000);

            })

            .catch(err => {

                console.log(err);

            });

    </script>

</head>

<body>

</body>

</html>

Promise改成了链式,但是不够完美,重点来了,今天的知识如何使用ES7 的async和await 让我们跟我们写日常普通代码一样写异步代码呢?

大家发现了吧,这样写是不是正确并且简单了啊,仅仅是加了两个单词而已,完整代码

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <script>

        function timeout(ms) {

            return new Promise((resolve, reject) => {

                setTimeout(resolve, ms, "finish");

            });

        }

        async function asyncTimeSys() {

            await timeout(1000);

            console.log("第一层异步结束!")

            await timeout(1000);

            console.log("第二层异步结束!")

            await timeout(1000);

            console.log("第三层异步结束!")

            await timeout(1000);

            console.log("第四层异步结束!")

            await timeout(1000);

            console.log("第五层异步结束!")

            return "all finish";

        }

        asyncTimeSys().then((value) => {

            console.log(value);

        });

    </script>

</head>

<body>

</body>

</html>

好,我们不整没用的我们看看实际项目里面怎么搞的,还是拿网易云举例:

webp  


ok,感觉天都亮了。

完全靠我讲大家体会不深,还是希望大家能够真的自己认真练习,把这个项目做出来,而不是变成听听而已。

webp

作者:Java邵先生
链接:https://www.jianshu.com/p/c0f1dd4b9c70


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消