同步事件解复用如何解决忙碌的等待?

我想了解如何同步事件解复用是一个忙碌的等待解决scheme。

假设有3个IO操作,并且我们有一个不断循环的代码来检查3个操作中的任何一个是否有可读取的数据。

arry = [event1 , event2 , event3] while(arry is not empty) { for(i = 0 ; i <= 2 ; i++) { if(arry[i] has something to read) { read data; } else { continue to next i; } if(arry[i] read has finished){ remove i from arry } } } 

上面的伪代码忙于等待。

现在在同步事件解复用或者说反应器模式时,事件监听器就会在事件发生时响应。 但是,一个事件监听器如何在不忙着等待的情况下这样做?

这不是它在JS中的工作方式。

当你提出一些可能触发asynchronous通知的请求时,你必须提供一个callback函数,这个callback函数将以请求结果作为参数被调用。

你的伪代码看起来像:

 // request completion callback function handle_request_notification (request status and associated data) { store request data wherever you like if all requests are complete (without error), do what you want to do (now that you have a complete set of data) } // issuing requests do_request (whatever1, handle_request_notification) do_request (whatever2, handle_request_notification) do_request (whatever3, handle_request_notification) 

所以基本上,它是处理asynchronous请求的库,它将激活实际需要读取的一些代码(或请求失败)。

每个特定的图书馆都有自己的做法。

你可以看看Ajax的一开始,这可能是所有JSasynchronous库的母亲。

或者,如果你想简单的学习基础知识,只需使用计时器:)