Skip to content

Commit feb26f0

Browse files
committed
add: proxy samples
1 parent be4edce commit feb26f0

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Nodejs Kafka Event-driven Microsevices
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function createReactiveObject(target, onChange) {
2+
return new Proxy(target, {
3+
set(target, prop, value) {
4+
const result = Reflect.set(target, prop, value);
5+
onChange(prop, value);
6+
return result;
7+
},
8+
});
9+
}
10+
11+
const state = createReactiveObject({ count: 0 }, (prop, value) => {
12+
console.log(`Property ${prop} changed to ${value}`);
13+
});
14+
15+
state.count = 1;
16+
state.count = 2;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const logHandler = {
2+
get(target, prop, receiver) {
3+
console.log(`Getting ${prop}`);
4+
return Reflect.get(...arguments);
5+
},
6+
set(target, prop, value) {
7+
console.log(`Setting ${prop} to ${value}`);
8+
return Reflect.set(...arguments);
9+
},
10+
};
11+
12+
const loggedObject = new Proxy({}, logHandler);
13+
14+
loggedObject.a = 1;
15+
console.log(loggedObject.a);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const apiMock = new Proxy(
2+
{},
3+
{
4+
get(target, prop) {
5+
if (prop === 'fetchData') {
6+
return () => Promise.resolve({ data: 'mocked data' });
7+
}
8+
return () => Promise.reject(new Error('not implemented'));
9+
},
10+
},
11+
);
12+
apiMock.fetchData().then((response) => console.log(response.data));

0 commit comments

Comments
 (0)