Skip to content

Instantly share code, notes, and snippets.

View semlinker's full-sized avatar
👊
Fighting

阿宝哥 semlinker

👊
Fighting
View GitHub Profile
@semlinker
semlinker / async-pool-es7.js
Last active March 20, 2023 18:21
async-pool-es7
async function asyncPool(concurrency, iterable, iteratorFn) {
const ret = []; // Store all asynchronous tasks
const executing = new Set(); // Stores executing asynchronous tasks
for (const item of iterable) {
// Call the iteratorFn function to create an asynchronous task
const p = Promise.resolve().then(() => iteratorFn(item, iterable));
ret.push(p); // save new async task
executing.add(p); // Save an executing asynchronous task
function asyncPool(concurrency, iterable, iteratorFn) {
let i = 0;
const ret = []; // // Store all asynchronous tasks
const executing = new Set(); // Stores executing asynchronous tasks
const enqueue = function() {
if (i === iterable.length) {
return Promise.resolve();
}
const item = iterable[i++]; // Get the new task item
const p = Promise.resolve().then(() => iteratorFn(item, iterable));
@semlinker
semlinker / index.html
Created July 24, 2022 09:21
File Type Detect Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Type Detect Demo</title>
</head>
<body>
<div>
@semlinker
semlinker / transmat-source.html
Created July 3, 2021 04:33
Transmat 使用示例
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Transmat Source 示例</title>
<script src="https://unpkg.com/transmat/lib/index.umd.js"></script>
<style>
body {
@semlinker
semlinker / index.html
Last active July 16, 2023 03:59
JavaScript 中如何实现大文件并发上传?
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>大文件并发上传示例(阿宝哥)</title>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/spark-md5/3.0.0/spark-md5.min.js"></script>
</head>
@semlinker
semlinker / directory-upload.js
Created May 11, 2021 14:10
目录上传和压缩目录上传示例
const path = require("path");
const Koa = require("koa");
const cors = require("@koa/cors");
const multer = require("@koa/multer");
const Router = require("@koa/router");
const fse = require("fs-extra");
const app = new Koa();
const router = new Router();
const paths = path.sep + ["public", "upload"].join(path.sep);
@semlinker
semlinker / app.js
Last active January 29, 2023 18:55
在线解压ZIP文件
const path = require("path");
const Koa = require("koa");
const cors = require("@koa/cors");
const Router = require("@koa/router");
const StreamZip = require("node-stream-zip");
const app = new Koa();
const router = new Router();
const ZIP_HOME = path.join(__dirname, "zip");
const UnzipCaches = new Map();
@semlinker
semlinker / index.html
Created April 18, 2021 09:22
JavaScript 中实现大文件并行下载
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>多线程下载示例</title>
<script src="multi-thread-download.js"></script>
</head>
<body>
@semlinker
semlinker / axios-retry-adapter.html
Created April 17, 2021 14:49
Axios 请求重试示例
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Axios 请求重试示例(适配器)</title>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
</head>
<body>
@semlinker
semlinker / index.html
Created April 11, 2021 05:49
Axios 缓存请求数据示例
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Axios 缓存请求数据示例</title>
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.9.6/qs.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
</head>