美文网首页
await可能存在的问题

await可能存在的问题

作者: zxqian1991 | 来源:发表于2017-07-11 11:28 被阅读18次

    node8 已经开始正式支持asyncawait的特性了,利用这两个特性写出来的代码,逻辑更加清晰了,看上去也更加优雅了。可是,却也会存在一定的问题:

    Promise
    话不多说,上代码

    async function render(){
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                console.log("end");
            })
        })
    };
    async function run(){
        console.log("before render");
        await render();
        console.log("after render");
    };
    run();
    

    这个代码应该打印什么结果呢?
    结果如下

    before render
    end
    

    奇怪的问题产生了,after end哪里去了?

    细心的同学可能已经发现,render函数中的Promise并没有执行resolve或者reject方法
    这个时候,其实代码执行到console.log("end")的时候就已经结束了,而不会再向下执行,所以使用的时候要注意(在使用nuxt.render的时候,当加载静态文件的时候,后面的函数就都会丢失,不会执行,具体看这里)。

    相关文章

      网友评论

          本文标题:await可能存在的问题

          本文链接:https://www.haomeiwen.com/subject/opgphxtx.html