中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node thread.sleep實現示例

發布時間:2020-10-15 15:52:36 來源:腳本之家 閱讀:156 作者:有把但沒什么卵用 欄目:web開發

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

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

怎么辦??

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

抱著好奇心去看了下源碼,又發現源碼相當之騷氣

'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;
}

黑人問號???

這是什么奇怪的實現。

翻閱node文檔發現

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的事件循環,除非創建的子進程執行完了,才會繼續執行下面的代碼。

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

node thread.sleep實現示例

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚宁县| 德阳市| 瓮安县| 八宿县| 顺平县| 札达县| 广州市| 龙江县| 神池县| 玉林市| 大石桥市| 西吉县| 邵阳县| 海盐县| 府谷县| 新余市| 明星| 宿迁市| 长葛市| 客服| 搜索| 育儿| 桃园县| 东辽县| 沙雅县| 洪泽县| 抚松县| 白山市| 武清区| 攀枝花市| 娱乐| 高州市| 绩溪县| 基隆市| 普洱| 龙川县| 江西省| 南郑县| 象山县| 嘉峪关市| 安阳县|