Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何制作代理';什么是异步的?_Javascript_Es6 Proxy - Fatal编程技术网

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
之外的任何内容时陷阱被打破之外),您只需注意等待承诺。不,无需等待即可立即显示异步值。您能否更详细地了解预期行为(即,您希望如何使用代理对象)以及?这段代码正确地获得了一个promise
newproxy({},{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;
          }
    }
})