91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

洛扎县| 怀安县| 白水县| 二连浩特市| 磐石市| 微博| 廊坊市| 油尖旺区| 乌兰县| 菏泽市| 井陉县| 兴山县| 静乐县| 长治县| 焦作市| 竹北市| 红桥区| 巢湖市| 雷州市| 丹巴县| 德江县| 汉阴县| 景泰县| 莱西市| 隆安县| 清远市| 海宁市| 武义县| 宁陕县| 潮州市| 上虞市| 凉山| 永川市| 遂昌县| 赤城县| 泸州市| 桂林市| 台北县| 广州市| 固安县| 利津县|