gpt4 book ai didi

javascript - 如何使 JavaScript 代理的处理程序方法成为异步函数?

转载 作者:行者123 更新时间:2023-12-01 16:24:56 30 4
gpt4 key购买 nike

请参阅有关 Proxy() 的 Mozilla 文档
一个简单的代理示例:

const handler = {
get: function(target, prop, receiver) {
return Reflect.get(target, prop, receiver);
},
set: function(target, prop, receiver) {
return Reflect.set(target, prop, receiver);
}
};

const proxy = new Proxy(target, handler);
我在 get 中有一些异步函数和 set ,所以我想让 getset成为 async功能。
我期待类似的东西:
const handler = {
get: async function(target, prop, receiver) {
await foo();
return Reflect.get(target, prop, receiver);
},
set: async function(target, prop, receiver) {
await bar();
return Reflect.set(target, prop, receiver);
}
};

const proxy = new Proxy(target, handler);

await (proxy.prop1 = xxx);
yyy = await proxy.prop2;
我怎样才能实现我的目标?谢谢!

最佳答案

这是不可能的。赋值表达式 proxy.property = value always1 的计算结果为 value ,而不是代理的 set 的一些返回值陷阱。你不能让它返回 await能 promise 。
1:除非分配,包括代理陷阱,当然会抛出异常。

关于javascript - 如何使 JavaScript 代理的处理程序方法成为异步函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63304113/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com