Skip to content

Instantly share code, notes, and snippets.

@hardfist
hardfist / expr.js
Created March 28, 2018 14:30
表达式求值
const expr = '1+23*34+45'
const op_reg = /(\+|-|\*|\/)/;
function tokenize(expr){
return expr.split(op_reg).map(x => {
if(op_reg.test(x)){
return x;
}else {
return +x;
}
@hardfist
hardfist / react-terminology.md
Created October 4, 2017 03:11 — forked from sebmarkbage/react-terminology.md
React (Virtual) DOM Terminology
@hardfist
hardfist / simple-promise-retry.js
Created May 8, 2017 09:44 — forked from briancavalier/simple-promise-retry.js
A few general patterns for retries using promises
function keepTrying(otherArgs, promise) {
promise = promise||new Promise();
// try doing the important thing
if(success) {
promise.resolve(result);
} else {
setTimeout(function() {
keepTrying(otherArgs, promise);
@hardfist
hardfist / AsyncComponent.js
Created April 12, 2017 02:23
AsynComponent
import React,{PropTypes} from 'react';
// Somewhere in code
<AsyncComponent loader={() => import('./SomeComponent')} />
// React wrapper for loading
class AsyncComponent extends React.Component {
constructor(props) {
super(props);
@hardfist
hardfist / index.html
Created January 8, 2017 08:26
事件捕获
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
@hardfist
hardfist / index.html
Created December 26, 2016 05:20
test
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
@hardfist
hardfist / vuelite.js
Created December 26, 2016 05:16
vue imlementation
let subscribers = []
let activeJob = null
let a = 3
const state = {
get a() {
if (subscribers.indexOf(activeJob) < 0) {
subscribers.push(activeJob)
}
return a
},
@hardfist
hardfist / vuelite.js
Created December 26, 2016 05:13
vue implementation
let subscribers = []
let activeJob = null
let a = 3
const state = {
get a() {
if (subscribers.indexOf(activeJob) < 0) {
subscribers.push(activeJob)
}
return a
},
function async(generator){
var iterator = generator();
function handle(iteratorResult){
if(iteratorResult.done){ return;}
const iteratorValue = iteratorResult.value;
if(iteratorValue instanceof Promise){
iteratorValue.then(res => handle(iterator.next(res)))
.catch(err => iterator.throw(err))
}