diff --git a/src/creating.mjs b/src/creating.mjs index dbf51e2..e9f15e8 100644 --- a/src/creating.mjs +++ b/src/creating.mjs @@ -1,22 +1,102 @@ -import setText from './results.mjs'; +import setText, { appendText } from "./results.mjs"; export function timeout(){ + const wait = new Promise(resolve => { + setTimeout(() => { + resolve("Timeout") + }, 1500); + }) + wait + .then(text => setText(text)) } export function interval(){ + let counter = 0 + const wait = new Promise(resolve => { + setInterval(() => { + console.log("interval") + resolve(`Timeout ${++counter}`) + }, 1500); + }) + + wait + .then(text => setText(text)) + .finally(() => appendText(` -- Done ${counter}`)) } export function clearIntervalChain(){ + let counter = 0 + let interval + const wait = new Promise(resolve => { + interval = setInterval(() => { + console.log("interval") + resolve(`Timeout ${++counter}`) + }, 1500); + }) + + wait + .then(text => setText(text)) + .finally(() => clearInterval(interval)) } export function xhr(){ + let request = new Promise((resolve, reject) => { + let xhr = new XMLHttpRequest() + xhr.open("GET", "http://localhost:3000/users/7") + xhr.onload = () => { + if (xhr.status === 200) { + resolve(xhr.responseText) + } else { + reject(xhr.statusText) + } + } + xhr.send() + }) + + request + .then(result => setText(result)) + .catch(reason => setText(reason)) } export function allPromises(){ + let categories = axios.get("http://localhost:3000/itemCategories") + let statuses = axios.get("http://localhost:3000/orderStatuses") + let userTypes = axios.get("http://localhost:3000/userTypes") + let addressTypes = axios.get("http://localhost:3000/addressTypes") + + Promise.all([categories, statuses, userTypes, addressTypes]) + .then(([cat, stat, type, address]) => { + setText(""); + + appendText(JSON.stringify(cat.data)) + appendText(JSON.stringify(stat.data)) + appendText(JSON.stringify(type.data)) + appendTest(JSON.stringify(address.data)) + }) + .catch(error => setText(error)) } export function allSettled(){ + let categories = axios.get("http://localhost:3000/itemCategories") + let statuses = axios.get("http://localhost:3000/orderStatuses") + let userTypes = axios.get("http://localhost:3000/userTypes") + let addressTypes = axios.get("http://localhost:3000/addressTypes") + + Promise.allSettled([categories, statuses, userTypes, addressTypes]) + .then((values) => { + let results = values.map(v => { + if (v.status === 'fulfilled') { + return `Fulfilled: ${JSON.stringify(v.value.data[0])} ` + } + + return `Rejected: ${v.reason.message} ` + }) + + setText(results) + }) + .catch(error => setText(error)) } export function race(){ + } \ No newline at end of file