Skip to content

Instantly share code, notes, and snippets.

View MeloGuo's full-sized avatar

郭梓梁 MeloGuo

View GitHub Profile
@MeloGuo
MeloGuo / machine.js
Created August 30, 2021 05:17
Generated by XState Viz: https://xstate.js.org/viz
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
@MeloGuo
MeloGuo / miniprogram-component-gulpfile.js
Created March 22, 2020 07:11
The gulpfile for mini program component
const path = require('path')
const { src, dest, parallel, watch, series } = require('gulp')
const ts = require('gulp-typescript')
const clean = require('gulp-clean')
const program = require('commander')
// enum of mode
const MODE = {
PRODUCTION: 'production',
DEVELOPMENT: 'development'
// 有 Bug 如果绑定元素有子元素那么点击子元素无法触发
// function listen (element, eventType, selector, fn) {
// element.addEventListener(eventType, event => {
// let { target } = event
// if (target.matches(selector)) {
// fn.call(target, event, target)
// }
// })
// }
class EventEmitter {
constructor () {
this.events = {}
}
on (eventName, callback) {
const callbacks = this.events[eventName] || []
callbacks.push(callback)
this.events[eventName] = callbacks
}
function debounce (fn, duration = 1000) {
let timer = null
return function (...args) {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn(...args)
}, duration)
}
}
Object.create = function (proto) {
function F () {}
F.prototype = proto
return new F()
}
function mockNew (constructor, ...args) {
const isPrimitive = result => {
if (result instanceof Object === true) {
return true
@MeloGuo
MeloGuo / promise.js
Last active February 19, 2019 06:10
function APromise(fn) {
const handlers = [];
let state = "pending";
let value = null;
this.then = function(onResolved, onRejected) {
return new APromise((resolve, reject) => {
handle({
onResolved,
resolve,
const gulp = require('gulp')
const rename = require('gulp-rename')
const del = require('del')
const through = require('through2')
const colors = require('ansi-colors')
const log = require('fancy-log')
const argv = require('minimist')(process.argv.slice(2))