javascript - 了解非阻塞 IO 示例

标签 javascript node.js

在阅读 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);
});
  1. 据我了解,第二个代码也将花费相同的时间来执行,然后移至下一行代码。如何区分?

  2. 另外,如何编写“函数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/

相关文章:

javascript - 类型错误 : Cannot read property 'client_secret' of undefined

javascript - 在 mark.js 中突出显示另一个已突出显示的术语中的术语

javascript - document.exec() 不适用于 onchange

javascript - 暂时禁用 node.js 垃圾收集

javascript - Node JS : Emoji in utf8 request returning � characters

node.js - 将 try/catch block 快速放入中间件以避免重复

javascript - 如何在同一个数组中使用 limit 和 fill()?

javascript - 为什么事件没有执行?

javascript继承、反射和原型(prototype)链行走?

node.js - 如何在Docker容器中运行npm命令?