await可能存在的问题

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的时候,当加载静态文件的时候,后面的函数就都会丢失,不会执行,具体看这里)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 异步编程对JavaScript语言太重要。Javascript语言的执行环境是“单线程”的,如果没有异步编程,根本...
    呼呼哥阅读 12,046评论 5 22
  • 你不知道JS:异步 第三章:Promises 在第二章,我们指出了采用回调来表达异步和管理并发时的两种主要不足:缺...
    purple_force阅读 6,370评论 0 4
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 7,690评论 0 5
  • 本文适用的读者 本文写给有一定Promise使用经验的人,如果你还没有使用过Promise,这篇文章可能不适合你,...
    HZ充电大喵阅读 12,058评论 6 19
  • 简单介绍下这几个的关系为方便起见 用以下代码为例简单介绍下这几个东西的关系, async 在函数声明前使用asyn...
    _我和你一样阅读 21,428评论 1 24

友情链接更多精彩内容