亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

輕松創(chuàng)建nodejs服務器(8):非阻塞是如何實現(xiàn)的

 更新時間:2014年12月18日 11:08:18   投稿:junjie  
這篇文章主要介紹了輕松創(chuàng)建nodejs服務器(8):非阻塞是如何實現(xiàn)的,本文著重分析非阻塞的實現(xiàn),對代碼進行了分解,需要的朋友可以參考下

這節(jié)我們來了解一下nodejs實現(xiàn)非阻塞操作的方法。

我們先來修改一下 start的處理程序:

復制代碼 代碼如下:

var exec = require("child_process").exec;
function start() {
  console.log("Request handler 'start' was called.");
  var content = "empty";
  exec("ls -lah", function (error, stdout, stderr) {
 content = stdout;
  });
  return content;
}
 
function upload() {
  console.log("Request handler 'upload' was called.");
  return "Hello Upload";
}
 
exports.start = start;
exports.upload = upload;

這段代碼,創(chuàng)建了一個新的變量content(初始值為“empty”),執(zhí)行“l(fā)s -lah”命令,將結果賦值給content,最后將content返回。

我們引入了一個新的Node.js模塊,child_process,之所以用它,是為了實現(xiàn)一個既簡單又實用的非阻塞操作:exec()。

那么exec()做了什么呢?

它從Node.js來執(zhí)行一個shell命令。在上面的例子里,我們用它來獲取當前目錄下所有的文件(“l(fā)s -lah”),然后,當/startURL請求的時候將文件信息輸出到瀏覽器中。

我們啟動服務器,訪問“http://localhost:8888/start”我們會發(fā)現(xiàn)頁面輸出的內(nèi)容是 empty。

exec()發(fā)揮作用了,有了它,我們可以執(zhí)行非常耗時的shell操作而無需迫使我們的應用停下來等待該操作。

雖然如此,但是頁面輸出的內(nèi)容似乎不是我們想要的結果。

我們來分析一下原因:

我們的代碼是同步執(zhí)行的,這就意味著在調(diào)用exec()之后,Node.js會立即執(zhí)行 return content ;

在這個時候,content仍然是“empty”,因為傳遞給exec()的回調(diào)函數(shù)還未執(zhí)行到——因為exec()的操作是異步的。

下一節(jié)我們將介紹如何解決這個問題。

相關文章

  • 詳解Node.js使用token進行認證的簡單示例

    詳解Node.js使用token進行認證的簡單示例

    這篇文章主要介紹了詳解Node.js使用token進行認證的簡單示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Node.js Buffer用法解讀

    Node.js Buffer用法解讀

    這篇文章主要介紹了Node.js Buffer用法解讀,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • node.js中的socket.io的廣播消息

    node.js中的socket.io的廣播消息

    這篇文章主要介紹了node.js中的socket.io的廣播消息,需要的朋友可以參考下
    2014-12-12
  • koa大型web項目中使用路由裝飾器的方法示例

    koa大型web項目中使用路由裝飾器的方法示例

    這篇文章主要介紹了koa大型web項目中使用路由裝飾器的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Node.js使用Express創(chuàng)建Web項目詳細教程

    Node.js使用Express創(chuàng)建Web項目詳細教程

    如果需要入門使用node.js進行web開發(fā),正在學習 nodejs web開發(fā)指南 的和想快速了解node.js web開發(fā)模式的朋友,相信本文是有一定幫助意義的。
    2017-03-03
  • ajax +NodeJS 實現(xiàn)圖片上傳實例

    ajax +NodeJS 實現(xiàn)圖片上傳實例

    本篇文章主要介紹了ajax +NodeJS 實現(xiàn)圖片上傳實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • nodejs接入阿里大魚短信驗證碼的方法

    nodejs接入阿里大魚短信驗證碼的方法

    本篇文章主要介紹了nodejs接入阿里大魚短信驗證碼的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-07-07
  • koa2上傳文件及https配置實現(xiàn)教程

    koa2上傳文件及https配置實現(xiàn)教程

    這篇文章主要為大家介紹了koa2上傳文件及https配置實現(xiàn)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 如何用npm命令刪除開發(fā)項目中的node_modules文件夾

    如何用npm命令刪除開發(fā)項目中的node_modules文件夾

    每個項目都會產(chǎn)生一個node_modules,每個node_modules少則幾十兆,多則幾百甚至上千兆,隨著時間的積累,維護項目的增加,整個項目目錄體積會越來越大,這篇文章主要給大家介紹了關于如何用npm命令刪除開發(fā)項目中的node_modules文件夾,需要的朋友可以參考下
    2023-12-12
  • npm國內(nèi)鏡像 安裝失敗的幾種解決方案

    npm國內(nèi)鏡像 安裝失敗的幾種解決方案

    這篇文章主要給大家總結了npm國內(nèi)鏡像npm安裝失敗的幾種解決方案,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下來一起看看吧。
    2017-06-06

最新評論