簡體   English   中英

如何使 JavaScript 代理的處理程序方法成為異步函數?

[英]How to make JavaScript Proxy's handler methods to be async functions?

請參閱有關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);

我在getset中有一些異步函數,所以我想讓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 always 1的計算結果為value ,而不是代理set陷阱的某個返回值。 你不能讓它返回一個await的 promise。

1:除非分配,包括代理陷阱,當然會拋出異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM