From d65cc52c0a95126c6794e052952e1695a26f67e6 Mon Sep 17 00:00:00 2001 From: Ueli Kunz Date: Sat, 16 May 2020 08:21:18 +0200 Subject: [PATCH] small fixes. --- src/exercises/functions/closures.js | 4 +- src/exercises/modules/admin.js | 2 +- src/exercises/promise.js | 40 -------------- src/exercises/promise.md | 52 +++++++++++++++++++ .../solutions/functions/closures.sol.js | 15 ++---- .../solutions/modules/admin/admin.module.js | 1 - 6 files changed, 58 insertions(+), 56 deletions(-) delete mode 100644 src/exercises/promise.js create mode 100644 src/exercises/promise.md diff --git a/src/exercises/functions/closures.js b/src/exercises/functions/closures.js index d0292f9..5b25244 100644 --- a/src/exercises/functions/closures.js +++ b/src/exercises/functions/closures.js @@ -1,9 +1,7 @@ // 1 // a. Was gibt folgender Code aus? -let i - -for (i = 0; i < 4; i++) { +for (var i = 0; i < 4; i++) { setTimeout(() => { console.log(i) }, 2000) diff --git a/src/exercises/modules/admin.js b/src/exercises/modules/admin.js index c667276..b385c04 100644 --- a/src/exercises/modules/admin.js +++ b/src/exercises/modules/admin.js @@ -13,7 +13,7 @@ Store(items) // items kann z.B. ein Array von Personen sein - add(item) - remove(item) - - findAll(item => boolean) + - findAll(item => boolean): Array // das bedeutet: die Methode findAll erwartet als Argument eine Funktion, welche als Argument ein Item entgegen nimmt und ein Boolean retourniert diff --git a/src/exercises/promise.js b/src/exercises/promise.js deleted file mode 100644 index 5eac978..0000000 --- a/src/exercises/promise.js +++ /dev/null @@ -1,40 +0,0 @@ -// 1 -// a -// Schreibe eine Funktion calcX, -// - die eine Zahl z zwischen 0 und 1 entgegen nimmt -// - ein Promise retourniert, welches bei einer Zahl -// - >= 0.8 diese als Fehler rejected -// - < 0.8 diese Zahl resolved -// Rufe die Funktion 10 mal auf und logge die Ergebnisse. - -// b -// Ergänze calcX so, dass Sie jeweils um (Math.random()*100)ms wartet bevor sie ein Resultat generiert. -// Rufe die Funktion 10 mal auf und logge die Ergebnisse. -// Was ist anders im Vergleich zum Verhalten unter 1a? - -// c -// Rufe die Funktion calcX 10 mal auf, summiere alle erfolgreichen Werte. Logge die fehlschläge. -// Verwende jeweils i/10 als Parameterwert. - - -// 2 -// Zeichne für folgende Code-Schnippsel ein Ablaufdiagram aller möglichen Abläufe. - -// a -getDetails(card.id) - .then(initDetails.bind(null, card)) - .finally(loading.bind(null, false)) - -// b -showExecuteListConfirmationDialog() - .then(callExecuteApi.bind(null, paymentsForExecution)) - .then(done.bind(null, true)) - .then(MessageBus.publish.bind(null, 'paymentListExecuted', paymentList, executionDate)) - .catch(handleError) - -// c -indicateLoading(true) - .then(loadRegions.bind(null, card.id)) - .then(assignRegions) - .catch(handleError) - .finally(indicateLoading.bind(this, false)) diff --git a/src/exercises/promise.md b/src/exercises/promise.md new file mode 100644 index 0000000..315dd93 --- /dev/null +++ b/src/exercises/promise.md @@ -0,0 +1,52 @@ +# Promise + +## 1 +### a +Schreibe eine Funktion calcX, +- die eine Zahl z zwischen 0 und 1 entgegen nimmt +- ein Promise retourniert, welches bei einer Zahl + - \>= 0.8 diese als Fehler rejected + - < 0.8 diese Zahl resolved + +Signatur: `calcX(Number): Promise` + +Rufe die Funktion 10 mal auf und logge die Ergebnisse. + +### b +Ergänze calcX so, dass Sie jeweils um (Math.random()*100)ms wartet bevor sie ein Resultat generiert. +Rufe die Funktion 10 mal auf und logge die Ergebnisse. + +Was ist anders im Vergleich zum Verhalten unter 1a? + +### c +Rufe die Funktion calcX 10 mal auf, summiere alle erfolgreichen Werte. Logge die fehlschläge. +Verwende jeweils i/10 als Parameterwert. + + +## 2 +Zeichne für folgende Code-Schnippsel ein Ablaufdiagram aller möglichen Abläufe. + +### a +``` +getDetails(card.id) + .then(initDetails.bind(null, card)) + .finally(loading.bind(null, false)) +``` + +### b +``` +showExecuteListConfirmationDialog() + .then(callExecuteApi.bind(null, paymentsForExecution)) + .then(done.bind(null, true)) + .then(MessageBus.publish.bind(null, 'paymentListExecuted', paymentList, executionDate)) + .catch(handleError) +``` + +### c +``` +indicateLoading(true) + .then(loadRegions.bind(null, card.id)) + .then(assignRegions) + .catch(handleError) + .finally(indicateLoading.bind(this, false)) +``` diff --git a/src/exercises/solutions/functions/closures.sol.js b/src/exercises/solutions/functions/closures.sol.js index c8a2986..d81b83f 100644 --- a/src/exercises/solutions/functions/closures.sol.js +++ b/src/exercises/solutions/functions/closures.sol.js @@ -10,20 +10,13 @@ for(let i=0;i<4;i++){ } // let erstellt eine Variable (Binding-Context) pro Block (for definiert einen Block). -for(var i=0;i<4;i++){ - window.setTimeout(()=>{ - var idx = i - window.alert(idx) - }, 2000) -} - // Variante 2 -[0,1,2,3,4].forEach(function(i){ - window.setTimeout(function(){ +[0,1,2,3,4].forEach(i => { + window.setTimeout(() => { window.alert(i) }, 2000) }) -// i wird jeweils an das argument des callbacks gebunden, der ist stehts so wie er sollte. +// i wird jeweils an das argument des callbacks gebunden. Pro callback entsteht ein neues Binding. // Variante 3 for(var i=0;i<4;i++){ @@ -31,4 +24,4 @@ for(var i=0;i<4;i++){ window.alert(idx) }.bind(null, i), 2000) } -// i wird als argument gebunden zum erstellungszeitpunk der funktion. es werden im ganzen 5 funktionsobjekte erstellt. \ No newline at end of file +// i wird als argument gebunden zum erstellungszeitpunk der funktion. Es werden im ganzen 5 funktionsobjekte erstellt. diff --git a/src/exercises/solutions/modules/admin/admin.module.js b/src/exercises/solutions/modules/admin/admin.module.js index 1c16cfe..790561a 100644 --- a/src/exercises/solutions/modules/admin/admin.module.js +++ b/src/exercises/solutions/modules/admin/admin.module.js @@ -1,3 +1,2 @@ - export {Person} from './person.js' export {Store} from './store.js'