This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const myString = "Foo Bar"; | |
const needle = "fOO"; | |
let isCaseInsensitive = myString.includes(needle)); // => isCaseInsensitive is false | |
isCaseInsensitive = myString.toUpperCase().includes(needle.toUpperCase()); // => isCaseInsensitive is true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// the scope of a let variable is the current block scope | |
// the scope of a var variable is the current function scope (if there is no function, than the scope is global) | |
// using var in this example will execute the loop and compute var i to the value 10 | |
// than the timeout callbacks will callback one after the other and access i which is globally set to 10 | |
for(var i = 0; i < 10; i++){ | |
setTimeout(function () { | |
console.log(i); | |
}, 1500, i); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// timeouts are handy to fake async calls | |
// setTimeout(callback function, 1500 /*milliseconds*/, 'parameters'); | |
function doSomething(name, callback){ | |
// 2.) task 1: we execute console.log('1'); | |
console.log('1'); | |
// 3.) task 1: we execute setTimeout. Set timeout creates a new task (task 2) that will be executed in 1500 milliseconds from now on | |
setTimeout(callback, 1500, name); | |
// 4.) task 1: we execute console.log('2'); | |
console.log('2'); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* what happens if task 1 takes longer than 1500 milliseconds to be executed? Does task 2 has to wait? | |
*/ | |
function doSomethingLonger(name, callback){ | |
// 2.) task 1: we execute console.log('1'); | |
console.log('1'); | |
// 3.) task 1: we execute setTimeout. Set timeout creates a new task (task 2) that will be executed in 1500 milliseconds from now on | |
setTimeout(callback, 1500, name); | |
// 4.) task 1: we execute console.log('2'); | |
while(true); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* implementing return value of setTimeout() from callback to promise | |
* @param ms | |
* @returns {Promise<function>} | |
*/ | |
const sleep = function (ms) { | |
// 4.) task 1: we create a new promise and call setTimeout(), | |
// set timeout creates a new taks 2 that will run after taks 1 has finished & 1500 milliseconds have passed | |
// new Promise(function(resolve, reject) { ... }); | |
return new Promise(resolve => { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* working with resolve() | |
*/ | |
const doSomethingChained = (name) => { | |
console.log('1'); | |
return new Promise((resolve, reject) => setTimeout(() => {console.log(name); resolve();}, 1500, name)); | |
}; | |
doSomethingChained('Alice').then(() => { | |
console.log('2'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// summarized and added comments, original source: https://es6.io/ course by Wes Bos | |
// messing with the prototype | |
Array.prototype.myFunction = function(){ | |
// add some array functionality | |
}; | |
// initialising our array | |
const names = ["Alice", "Foo", "Bar", "Jon Doe"]; | |
// adding some further properties |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Form as RemixForm } from 'remix'; | |
import type { FC } from 'react'; | |
import type { FormProps, Request } from 'remix'; | |
type FormReqBody = { method: 'get' | 'post' | 'put' | 'delete' } & Record<string, string>; | |
export async function parseURLSearchParams(request: Request): Promise<Partial<FormReqBody>>; | |
export async function parseURLSearchParams<ReqBody>(request: Request): Promise<Partial<ReqBody & FormReqBody>>; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { useCallback, useEffect } from 'react'; | |
import { useSearchParams } from 'react-router-dom'; | |
export default function useErrorNotifications() { | |
const { pushNotification } = useContext(NotificationsContext); | |
const [searchParams, setSearchParams] = useSearchParams(); | |
const errorCode = searchParams.get('error'); | |
const onClose = useCallback(() => { | |
searchParams.delete('error'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import childProcess from 'child_process'; | |
import fs from 'fs'; | |
import dotenv from 'dotenv'; | |
import prettier from 'prettier'; | |
const rootDir = process.cwd(); | |
dotenv.config({ | |
path: `${rootDir}/.env.production`, | |
}); |
OlderNewer