nodejs中的fiber(纤程)库详解
在node中,单线程是仅针对javascript而言的,其底层其实充斥着多线程。fn返回后或调用 yield()后,堆栈重置,当再次调用 run()时,纤程会再次启动, fn运行于首次分配的堆栈中。获得当前纤程,并可对其进行操作。我们已经知道Fiber可能存在不同的时态,同时会影响 run的行为。而 reset方法则不管Fiber处理什么状态,都恢复到初始状态。随后再执行 run,就会重新运行 fn。本质上 throwInto会抛出传给它的异常,并将异常信息作为 run的返回值。如果在Fiber内不对它抛出的异常作处理,异常会继续冒泡。不管异常是否处理,它会强制 yield,中断Fiber。实际上 power方法是在Fibel内执行的。顾名思义,它的作用就是等待结果。事实上 future也通过 resolve方法提供设置回调函数的解决方案。返回布尔值,表示操作是否已经执行。
用户评论