Why
Instead of reactive data
let userWrapper = {
user: {
name: "John",
surname: "Smith",
get fullName() {
return `${this.name} ${this.surname}`
}
},
get descent() {
return `${this.user.name} ${this.user.surname}`
}
}
JS Proxy & Promise can make await property
async function parseValue() {
await new Promise(resolve => setImmediate(resolve));
return "parsed value"
}
let proxy = new Proxy(myObject, {
get(target, prop, receiver) {
if (prop === "attribute") {
let newProp = prop + "_parsed"
if (!(newProp in target)) {
target[newProp] = parseValue()
}
return target[newProp]
} else {
return Reflect.get(target, prop, receiver)
}
},
})
await proxy.attribute