欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node thread.sleep實現(xiàn)示例

 更新時間:2018年06月20日 14:28:48   作者:有把但沒什么卵用  
這篇文章主要介紹了node thread.sleep實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

最近在寫一些奇怪的東西的時候,發(fā)現(xiàn)大佬們用go或者其他語言實現(xiàn)的并發(fā)任務用了thread.sleep讓主進程暫停。

回頭一想,媽個雞我要復制粘貼到node一直循環(huán)不合適啊,我也需要暫停來著!

怎么辦??

抓了腦袋一會去npm上找了下相關的包,發(fā)現(xiàn)有個叫thread-sleep的包,下載量還挺高。

抱著好奇心去看了下源碼,又發(fā)現(xiàn)源碼相當之騷氣

'use strict';

var childProcess = require('child_process');
var nodeBin = process.argv[0];

module.exports = sleep;
function sleep(milliseconds) {
 var start = Date.now();
 if (milliseconds !== Math.floor(milliseconds)) {
  throw new TypeError('sleep only accepts an integer number of milliseconds');
 } else if (milliseconds < 0) {
  throw new RangeError('sleep only accepts a positive number of milliseconds');
 } else if (milliseconds !== (milliseconds | 0)) {
  throw new RangeError('sleep duration out of range')
 }
 milliseconds = milliseconds | 0;

 var shouldEnd = start + milliseconds;
 try {
  childProcess.execFileSync(nodeBin, [ '-e',
   'setTimeout(function() {}, ' + shouldEnd + ' - Date.now());'
  ], {
   timeout: milliseconds,
  });
 } catch (ex) {
  if (ex.code !== 'ETIMEDOUT') {
   throw ex;
  }
 }
 var end = Date.now();
 return end - start;
}

黑人問號???

這是什么奇怪的實現(xiàn)。

翻閱node文檔發(fā)現(xiàn)

Synchronous Process Creation#

The child_process.spawnSync(),
child_process.execSync(), and child_process.execFileSync() methods are synchronous and WILL block the Node.js event loop,
pausing execution of any additional code until the spawned process exits.

Blocking calls like these are mostly useful for simplifying general-purpose scripting tasks and for simplifying the loading/processing of application configuration at startup.
???

以上三種同步方法會阻塞nodejs的事件循環(huán),除非創(chuàng)建的子進程執(zhí)行完了,才會繼續(xù)執(zhí)行下面的代碼。

thread-sleep包的作者正是利用這一特性實現(xiàn)了sleep功能。嘆為觀止

所以很多時候我們沒辦法解決現(xiàn)有問題的原因是對文檔不熟么??

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 阿里大于短信驗證碼node koa2的實現(xiàn)代碼(最新)

    阿里大于短信驗證碼node koa2的實現(xiàn)代碼(最新)

    本文給大家分享一個最新版阿里大于短信驗證碼node koa2的實現(xiàn)代碼及注意事項,需要的朋友參考下吧
    2017-09-09
  • nodejs連接mysql數(shù)據(jù)庫簡單封裝示例-mysql模塊

    nodejs連接mysql數(shù)據(jù)庫簡單封裝示例-mysql模塊

    本篇文章主要介紹了nodejs連接mysql數(shù)據(jù)庫簡單封裝(mysql模塊),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • node.js對應npm安裝和使用方法教程

    node.js對應npm安裝和使用方法教程

    這篇文章主要給大家介紹了關于node.js對應npm安裝和使用方法的相關資料,文中通過代碼介紹的非常詳細,對大家學習或者使用node.js具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • 在Node.js中發(fā)出HTTP請求的 5 種方法

    在Node.js中發(fā)出HTTP請求的 5 種方法

    學習如何在 Node.js 中發(fā)出 HTTP 請求可能會讓人感到不知所措,因為有數(shù)十個可用的庫,每個解決方案都聲稱比上一個更高效,在這篇文章中,我們將探討在 Node.js 中發(fā)出 HTTP 請求的五種最流行的方法,并為每種方法提供說明,需要的朋友可以參考下
    2023-11-11
  • Node.js API詳解之 tty功能與用法實例分析

    Node.js API詳解之 tty功能與用法實例分析

    這篇文章主要介紹了Node.js API詳解之 tty功能與用法,結(jié)合實例形式分析了Node.js API中tty的基本功能、用法及終端操作相關使用技巧,需要的朋友可以參考下
    2020-04-04
  • 三分鐘教你用Node做一個微信哄女友神器(面向小白)

    三分鐘教你用Node做一個微信哄女友神器(面向小白)

    這篇文章主要介紹了三步教你用Node做一個微信哄女友神器(面向小白),用node和wechaty微信網(wǎng)頁接口開發(fā)的一款小工具,可以定時給女朋友發(fā)每天的天氣情況,天氣提醒,每日一句,通過配置機器人api后還可以實現(xiàn)微信機器人自動陪女朋友聊天,需要的朋友可以參考下
    2019-06-06
  • nodejs文件實現(xiàn)打包成exe, 并設置開機自啟動的方法詳解(沒有黑窗口)

    nodejs文件實現(xiàn)打包成exe, 并設置開機自啟動的方法詳解(沒有黑窗口)

    這篇文章主要介紹了nodejs文件實現(xiàn)打包成exe, 并設置開機自啟動的方法,結(jié)合實例形式分析了node.js使用pkg包實現(xiàn)生成exe可執(zhí)行文件的相關操作技巧,需要的朋友可以參考下
    2023-05-05
  • node使用Mongoose類庫實現(xiàn)簡單的增刪改查

    node使用Mongoose類庫實現(xiàn)簡單的增刪改查

    Mongoose是在nodejs環(huán)境中對MongoDB數(shù)據(jù)庫操作的封裝,這篇文章主要介紹了node使用Mongoose類庫實現(xiàn)簡單的增刪改查,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 使用C++為node.js寫擴展模塊

    使用C++為node.js寫擴展模塊

    本文給大家介紹的是在window7下使用C++來給node.js編寫擴展模塊的方法,附上一個簡單的hello實例,有需要的小伙伴可以參考下。
    2015-04-04
  • node.js中的fs.unlink方法使用說明

    node.js中的fs.unlink方法使用說明

    這篇文章主要介紹了node.js中的fs.unlink方法使用說明,本文介紹了fs.unlink的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12

最新評論