打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ES6---async, await, promise 综合例子

ES6---async, await, promise 综合例子

  •         new Promise(主线程代码).then(成功微任务, 失败微任务);
  •         sync---替代promise
  •         await---替代then

 


 

1. 

    <div id="aa"></div>
    <script type="text/javascript">
        // new Promise(主线程代码).then(成功微任务, 失败微任务);
        // async---替代promise
        // await---替代then

        var kk = [{ age: 18 }, { age: 19 }, { age: 20 }];
        console.log(kk);
        for (var i = 0; i < kk.length; i++) {
            document.getElementById("aa").innerHTML += '<div>' + kk[i].age + '</div>';
            console.log(kk[i]);
        }
    </script>

 

console: 

 

 

2.

        var kk = [{ age: 18 }, { age: 19 }, { age: 20 }];
        console.log(kk);

        //遍历循环
        for (const k_item of kk) {
            document.getElementById("aa").innerHTML += '<div>' + k_item.age + '</div>';
            console.log(k_item.age);

 

 

console:

 

 

3. 延迟效果

        //延迟效果 setTimeout可以实现定时效果,但是,怎么知道它结束呢?
        //resolve, reject发通知,用then捕获
        var kk = [{ age: 18 }, { age: 19 }, { age: 20 }, { age: 22 }, { age: 40 }, { age: 25 }, { age: 23 }];
        console.log(kk);

        async function sleep(sec = 1000) {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve();
                }, sec);
            });
        }
        async function show() {
            for (const k_item of kk) {
                //类似于Thread.sleep(500);
                await sleep(500); //卡住,卡到sleep()里面的promise发出了resolve()
                document.getElementById("aa").innerHTML += '<div>' + k_item.age + '</div>';
            };
        };
        show();

 

console:

 

 页面间隔500ms显示

 

 

4.

        //class 写死的写法
        class MyTask {
            then(resolve, reject) {
                console.log('123');

            };
        }

 

console:

 

 

5.

        class MyTask {
            then(resolve, reject) {
                console.log('123');
                resolve('来自class的promise发出通知的值');
            };
        }

        var p = new MyTask();
        console.log(p);

        new Promise((resolve, reject) => {
            resolve('a123');
        }).then(result => {
            console.log(result);
            //不继续执行就不用return,否则需要return, 7种类型都可以
            return p;
        }, error => { }).then(
            result => {
                console.log(result);
            });

 

console:

 

 

6. 上面的代码用async await实现

        class MyTask {
            then(resolve, reject) {
                console.log('123');
                resolve('来自class的promise发出通知的值');
            };
        }

        var p = new MyTask();

        async function ttt() {
            let result = await 'a123';
            console.log(result);
            let result2 = await p;
            console.log(result2);
        }
        ttt();

 

console:

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
目前最好的 JavaScript 异步方案 async/await
ES6新特性(5)之Promise/async
async/await 是如何让代码更加简洁的?
Puppeteer 系列踩坑日志—4—跨域的几种方式
js 宏观任务和微观任务> promise的代码为什么比setTimeout先执行
vue使用promise、async、await的一点理解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服