4.5.1 • Published 2 months ago

qiao-parallel v4.5.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

qiao-parallel

npm version npm downloads

nodejs 下并行执行任务,详见:一篇文章了解 JS 并行任务

install

安装

npm i qiao-parallel

use

使用

// cjs
const { parallelByIIFE, parallelByFork, parallelByWorker } = require('qiao-parallel');

// mjs
import { parallelByIIFE, parallelByFork, parallelByWorker } from 'qiao-parallel';

code

示例代码

values

并行任务池

module.exports = [100, 300, 200, 400];

callback

单个任务完成回调

// q
const q = require('qiao-console');

/**
 * callback
 * @param {*} index
 * @param {*} res
 */
module.exports = function (index, res) {
  q.writeLine(index, `${index} ${res}`);
};

complete

所有任务完成回调

// q
const q = require('qiao-console');

/**
 * complete
 * @param {*} l
 */
module.exports = function (l) {
  q.writeLine(l, 'complete');
};

handler

模拟任务代码

/**
 * handler
 * @param {*} timeout
 * @returns
 */
module.exports = function (timeout) {
  return new Promise(function (resolve) {
    setTimeout(() => {
      return resolve(timeout);
    }, timeout);
  });
};

handler fork js

模拟任务代码-fork 模式

// handler
const handler = require('./_handler.js');

// fork handler
async function forkHandler() {
  // check
  if (!process || !process.argv) return;

  // value
  const value = parseInt(process.argv[2]);

  // msg
  const msg = await handler(value);
  process.send(msg);
}

forkHandler();

api

parallel by IIFE

// q
const q = require('qiao-console');

// vars
const values = require('./_values.js');
const handler = require('./_handler.js');
const callback = require('./_callback.js');
const complete = require('./_complete.js');

// parallel
const parallel = require('../index.js');

// test
(function () {
  q.clear();

  parallel.parallelByIIFE(handler, values, callback, complete);
})();

parallel by fork

// q
const q = require('qiao-console');

// vars
const values = require('./_values.js');
const callback = require('./_callback.js');
const complete = require('./_complete.js');

// parallel
const parallel = require('../index.js');

// test
(function () {
  q.clear();

  const jsPath = require('path').resolve(__dirname, './fork-handler.js');
  parallel.parallelByFork(jsPath, values, callback, complete);
})();

parallel by worker

// q
const q = require('qiao-console');

// vars
const values = require('./_values.js');
const callback = require('./_callback.js');
const complete = require('./_complete.js');

// parallel
const parallel = require('../index.js');

// test
(function () {
  q.clear();

  const jsPath = require('path').resolve(__dirname, './worker-handler.js');
  parallel.parallelByWorker(jsPath, values, callback, complete);
})();
4.5.1

2 months ago

4.4.2

3 months ago

4.2.6

6 months ago

4.0.0

7 months ago

4.3.0

6 months ago

4.1.1

7 months ago

3.4.7

8 months ago

3.2.7

1 year ago

3.3.0

12 months ago

3.1.2

1 year ago

3.1.5

1 year ago

3.1.4

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

3.1.1

1 year ago

3.0.0

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago