关于async function的设计哲学:如何评价await一个resolved的promise会使上下文拆成两个tick?
3 回复
老实说,这个问题蛮诡异的,按照他的设想,那么还要async函数干啥,直接都是同步的了 Promise.resolve,看起来直接状态置为resolved,但是他忽略了要获取返回值依旧要使用到Promise.resolve(xxx).then(data=>xxx), 而then注册的回调函数就是放在job queue(也是所谓的microtask queue)中在下一个tick执行的,规范要求就是这么实现的,不知道这和async function的设计哲学有啥关系
@hyj1991 V2EX的帖子也是我的。我觉得async function应该节省tick,另实现一个时而异步时而同步的then2。健壮的程序可以应对时而同步时而异步的回调。
說明本質上沒搞懂,JS核心它還是異步的,所謂的async/await是為了讓你書寫起來像同步,並不是想真的做同步。 真做同步那麼多異步IO怎麼辦?捨本逐末?揚短避長?