View asyn await error handling.js
module.exports.catchErrors = function catchErrors(fn) { | |
return function(...args) { | |
return fn(...args).catch(err => { | |
console.error(err) | |
}) | |
} | |
} |
View request.js
const fs = require('fs') | |
const request = (url) => new Promise((resolve, reject) => { | |
// Get userID from supplied url string | |
const lastSlash = url.lastIndexOf('/') | |
const userID = url.substring(lastSlash + 1) | |
// Load user json data from a file in de subfolder for mock data | |
fs.readFile(`./src/api/__mockData__/${userID}.json`, 'utf8', (err, data) => { | |
if (err) reject(err) | |
// Parse the data as JSON and put in the key entity (just like the request library does) |
View example.sh
now alias $(now ./build --public --static) play-it.now.sh |
View AsyncPopup-with-renderProps.jsx
// AsyncPopup using renderProps | |
const AsyncPopupV2 ({ hasLoaded = false, renderContent }) => ( | |
<View>{hasLoaded ? renderContent() : null}</View> | |
); | |
// example usage: | |
const App = () => ( | |
<View> | |
<AsyncPopupV2 | |
hasLoaded |
View Async-Implementation-v1.jsx
// conditionally render children based on loading state | |
const AsyncPopup = ({ hasLoaded = false, children }) => ( | |
<View>{hasLoaded ? children : null}</View> | |
); | |
// example usage | |
const App = () => ( | |
<View> | |
<AsyncPopup hasLoaded> | |
<DataComponent data={someData} /> |
View AsyncPopup-RN.jsx
import React from 'react'; | |
import PropTypes from 'prop-types'; | |
import { ViewPropTypes } from 'react-native'; | |
import Popup from './Popup'; | |
import Loader from './Loader'; | |
import LoadingError from './LoadingError'; | |
const AsyncPopup = ({ | |
style, |
View shrinkpdf.sh
#!/bin/sh | |
# http://www.alfredklomp.com/programming/shrinkpdf | |
# Licensed under the 3-clause BSD license: | |
# | |
# Copyright (c) 2014, Alfred Klomp | |
# All rights reserved. | |
# | |
# Redistribution and use in source and binary forms, with or without | |
# modification, are permitted provided that the following conditions are met: |
View 03-compound-component.js
function ToggleOn({on, children}) { | |
return on ? children : null | |
} | |
function ToggleOff({on, children}) { | |
return on ? null : children | |
} | |
function ToggleButton({on, toggle, ...props}) { | |
return ( | |
<Switch on={on} onClick={toggle} {...props} /> | |
) |
View example.js
const api = {}; | |
const ajv = new Ajv({ | |
coerceTypes: true, | |
useDefaults: true, | |
allErrors: true, | |
}); | |
api.api = (schema, handler) => { | |
const validator = ajv.compile(schema); |
View delay.js
'use strict' | |
const timeout = ms => new Promise(res => setTimeout(res, ms)) | |
function convinceMe (convince) { | |
let unixTime = Math.round(+new Date() / 1000) | |
console.log(`Delay ${convince} at ${unixTime}`) | |
} | |
async function delay () { |
NewerOlder