最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ā)任務(wù)用了thread.sleep讓主進程暫停。

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

怎么辦??

抓了腦袋一會去npm上找了下相關(guān)的包,發(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

左权县| 昌邑市| 德兴市| 通河县| 修文县| 墨江| 柳林县| 克什克腾旗| 吉林市| 平谷区| 金寨县| 潞城市| 金秀| 钟山县| 永康市| 新乐市| 宾川县| 老河口市| 高州市| 新绛县| 张家界市| 滦南县| 承德县| 四川省| 大名县| 平遥县| 大安市| 济宁市| 淮安市| 兴文县| 鹤峰县| 济阳县| 文昌市| 乳山市| 静乐县| 腾冲县| 巴青县| 和田县| 久治县| 金湖县| 屯门区|