在阅读 Node.js 教程时,我遇到了 this page他们以“餐厅服务”为例解释了该场景。
在阻塞IO中,他们有一个代码:
// requesting drinks for table 1 and waiting...
var drinksForTable1 = requestDrinksBlocking(['Coke', 'Tea', 'Water']);
// once drinks are ready, then server takes order back to table.
serveOrder(drinksForTable1);
// once order is delivered, server moves on to another table.
在非阻塞IO中,他们将其更改为:
// requesting drinks for table 1 and moving on...
requestDrinksNonBlocking(['Coke', 'Tea', 'Water'], function(drinks){
return serveOrder(drinks);
});
据我了解,第二个代码也将花费相同的时间来执行,然后移至下一行代码。如何区分?
另外,如何编写“函数requestDrinksNonBlocking()”来处理数组
['Coke', 'Tea', 'Water']
,然后执行serveOrder
使用匿名函数。
请帮我理解这个场景。
最佳答案
在第一个示例中,执行 requestDrinksNonBlocking
并使用输出调用 serveOrder
在第二个示例中,requestDrinksNonBlocking
采用回调 (serveOrder
),请求完成时将调用该回调
requestDrinksNonBlocking
实现示例
requestDrinksNonBlocking=function(drinks,callback){
//Handle request from the array {drinks}
callback(drinks);
}
关于javascript - 了解非阻塞 IO 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926585/