-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path09-callback-clousures-generator.txt
101 lines (74 loc) · 2.16 KB
/
09-callback-clousures-generator.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
1. Callback
//https://developer.mozilla.org/es/docs/Glossary/Callback_function
function filter(input,predicate){
const result = []
for(const value of input){
if(predicate(value)){
result.push(value)
}
}
return result
}
filter([1,2,3,4,5,6], v=>v%2===0)
2. Clouruse
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
La instanciacion de un objeto a traves de la llamada a una
function que devuelve otra funcion
function sum(a){
return function(b){
debugger
return a+b
}
}
sum(5)(3)->8
const result = sum(5)
result(100) //105
result(30) //35
//Gestion de eventos
function events(node,event,cb){
node.addEventListener(event,cb)
return ()=>node.removeEventListener(event,cb)
}
const dispose = events(document,'click',console.log)
dipose()->libero el evento
//https://angular.dev/guide/signals
function signal(initialValue){
let value = initialValue //state
const fn = ()=>value //getter
fn.set = newValue=>{ //setter
if(newValue!=value){
const msg = `El valor actual es ${newValue} y el valor anterior es ${value}`
console.log(msg)
value=newValue
}
}
return fn
}
3 Generator
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator
function filter(input,predicate){
const result = []
for(const value of input){
if(predicate(value)){
result.push(value)
}
}
return result
}
1. problema de memoria
2. bloqueante
function* filter(input,predicate){
for(const value of input){
if(predicate(value)){
yield value
}
}
}
const result = filter([1,2,3,4,5,6], v=>v%2===0)
result.next()
result.next()
result.next()
result.next() {value:undefined, done:true}
consumir->next
produccer->yield
https://github.com/tc39/proposal-iterator-helpers