轻松创建nodejs服务器(8):非阻塞是如何实现的
我们先来修改一下 start的处理程序:这段代码,创建了一个新的变量content,执行“ls -lah”命令,将结果赋值给content,最后将content返回。我们引入了一个新的Node.js模块,child_process,之所以用它,是为了实现一个既简单又实用的非阻塞操作:exec()。在上面的例子里,我们用它来获取当前目录下所有的文件,然后,当/startURL请求的时候将文件信息输出到浏览器中。我们启动服务器,访问“http://localhost:8888/start”我们会发现页面输出的内容是 empty。我们来分析一下原因:我们的代码是同步执行的,这就意味着在调用exec()之后,Node.js会立即执行 return content ;在这个时候,content仍然是“empty”,因为传递给exec()的回调函数还未执行到――因为exec()的操作是异步的。下一节我们将介绍如何解决这个问题。
用户评论