Skip to main content

2 posts tagged with "JavaScript"

View All Tags

· 3 min read

问题

为什么try catch能捕捉await后promise错误? 和执行栈有关系吗?

为什么try catch 中promise的错误catch不了。 await后就可以catch了?

普通函数不能try catch promise,因为其throw error时的执行栈,和try catch它的函数无关了。

而async await能像generate一样在控制执行流,触发时,函数执行栈恢复到 try catch它时的函数执行栈,所以能try catch。

· 18 min read

问题

async/await异步模型是否优于stackful coroutine模型?

这里说的coroutine是stackful的,可以对比js的async/await和fibjs,还有c#的async/await对比go的goroutine。

async/await的优点是不需要为每个coroutine分配单独的栈内存,只需要一个闭包保存状态,避免了内存浪费;在调度上也更加灵活,可以让用户手动调度;另外在实现上也不需要改动虚拟机,只要在语言层面加上generator的支持就可以实现。那么是不是可以认为async/await是一个更好的异步方案呢?