在阅读node.js教程时,我遇到了此页,他们以"Restaurant服务“为例解释了这个场景。
在阻塞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);
});['Coke', 'Tea', 'Water'],然后使用匿名函数执行serveOrder。请帮我理解一下情况。
发布于 2017-03-21 12:17:10
在第一个示例中,requestDrinksNonBlocking执行并使用输出调用serveOrder
在第二个示例中,requestDrinksNonBlocking接受一个回调(serveOrder),它将在执行请求时调用该回调函数。
requestDrinksNonBlocking实现示例
requestDrinksNonBlocking=function(drinks,callback){
//Handle request from the array {drinks}
callback(drinks);
}发布于 2017-03-21 12:15:36
据我所理解,第二段代码也需要同样的时间来执行,然后移到下一行代码。如何区分?
这段代码单独运行所需的时间并不重要。在第二种情况下,在调用作为回调传递的函数之前,可能会发生其他事情,因此,例如,可以处理其他请求而不是等待。
另外,如何编写“函数requestDrinksNonBlocking()”,该函数可以处理数组“how”、“茶”、“水”,然后使用匿名函数执行serveOrder。
关于如何编写函数而不知道它应该做什么的问题,有无限多的答案。
https://stackoverflow.com/questions/42926585
复制相似问题