从Java视角理解JavaScript中的axios与Promise的协作机制
下面的内容仅仅从平时使用axiso和promise的层面上出发,和实际的运行机理出入很大,纯纯自圆其说,大家看个乐呵就行
axios是异步发送请求的,简单来说,其会单独开一个线程去执行发送请求的代码,那么在这个单独开辟出的线程中,发送请求后必然能够阻塞等待到结果(结果好坏均有可能)。另外,似乎这个线程的内部的执行逻辑还有promise参与,promise初始化的状态为pending,那么根据结果的好坏,这个线程内部应该是对promise的状态进行了操作的,比如改变其状态为fullfilled。我觉得到这一步这个单独开辟线程的任务就结束了。主线程中会通过then或catch去填充promise实例中结果的回调逻辑,这个回调逻辑不管是先于结果填充到promise还是后于结果填充到promise都会立马开辟一个新线程去执行,执行的过程我觉得是有说法的,应该是监听到promise状态未改变就阻塞,改变了就继续执行回调逻辑。至此,根据Java背景解释axios和promise就都说得通了。