Javascript 如何制作代理';什么是异步的?
假设我们有一个对象:Javascript 如何制作代理';什么是异步的?,javascript,es6-proxy,Javascript,Es6 Proxy,假设我们有一个对象: const obj = { element } 以及具有“异步陷阱”的代理: 我试过上面的代码,但不起作用。代理似乎不将异步get识别为陷阱,也不拦截getter 如何解决这个问题?或: 是否有其他方法可以在不改变原始对象的情况下获取对象属性的“延迟”值?您能否更详细地了解预期行为(即您希望如何使用代理对象)和?这段代码正确地获得了一个promisenewproxy({},{get:async(obj,prop)=>console.log('intercepted')})
const obj = { element }
以及具有“异步陷阱”的代理:
我试过上面的代码,但不起作用。代理似乎不将异步get识别为陷阱,也不拦截getter
如何解决这个问题?或:
是否有其他方法可以在不改变原始对象的情况下获取对象属性的“延迟”值?您能否更详细地了解预期行为(即您希望如何使用代理对象)和?这段代码正确地获得了一个promise
newproxy({},{get:async(obj,prop)=>console.log('intercepted')})。元素
。请记住,async函数
只是一个返回承诺的函数。这应该可以正常工作(除了在访问.element
之外的任何内容时陷阱被打破之外),您只需注意等待承诺。不,无需等待即可立即显示异步值。您能否更详细地了解预期行为(即,您希望如何使用代理对象)以及?这段代码正确地获得了一个promisenewproxy({},{get:async(obj,prop)=>console.log('intercepted')})。元素
。请记住,async函数
只是一个返回承诺的函数。这应该可以正常工作(除了在访问.element
之外的任何内容时陷阱被打破之外),您只需注意等待承诺。否,无需等待异步值立即出现。
const proxy = new Proxy( obj, {
get: async function(obj, prop) {
if(prop === 'element') {
// wait until child element appears ( - just for example,
// in general this function returns delayed value)
const result = wait(obj[prop].querySelector('.child')); //promise
return await result;
}
}
})