首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解非阻塞IO示例

理解非阻塞IO示例
EN

Stack Overflow用户
提问于 2017-03-21 12:02:18
回答 2查看 56关注 0票数 0

在阅读node.js教程时,我遇到了此页,他们以"Restaurant服务“为例解释了这个场景。

阻塞IO中,它们有一个代码:

代码语言:javascript
复制
// 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中,他们将其更改为:

代码语言:javascript
复制
// requesting drinks for table 1 and moving on...
requestDrinksNonBlocking(['Coke', 'Tea', 'Water'], function(drinks){
  return serveOrder(drinks);
});
  1. 据我所理解,第二段代码也需要同样的时间来执行,然后移到下一行代码。如何区分?
  2. 另外,如何编写“函数requestDrinksNonBlocking()”,该函数可以处理数组['Coke', 'Tea', 'Water'],然后使用匿名函数执行serveOrder

请帮我理解一下情况。

EN

回答 2

Stack Overflow用户

发布于 2017-03-21 12:17:10

在第一个示例中,requestDrinksNonBlocking执行并使用输出调用serveOrder

在第二个示例中,requestDrinksNonBlocking接受一个回调(serveOrder),它将在执行请求时调用该回调函数。

requestDrinksNonBlocking实现示例

代码语言:javascript
复制
requestDrinksNonBlocking=function(drinks,callback){
    //Handle request from the array {drinks}
    callback(drinks);
}
票数 1
EN

Stack Overflow用户

发布于 2017-03-21 12:15:36

据我所理解,第二段代码也需要同样的时间来执行,然后移到下一行代码。如何区分?

这段代码单独运行所需的时间并不重要。在第二种情况下,在调用作为回调传递的函数之前,可能会发生其他事情,因此,例如,可以处理其他请求而不是等待。

另外,如何编写“函数requestDrinksNonBlocking()”,该函数可以处理数组“how”、“茶”、“水”,然后使用匿名函数执行serveOrder。

关于如何编写函数而不知道它应该做什么的问题,有无限多的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42926585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档