在评估代理时调用代理获取处理程序
我定义了一个代理如下:
const o1 = {
ready: false
};
setTimeout(() => {
o1.ready = true;
}, 1000000000);
const handler = {
get(target, propKey, receiver) {
if (target.ready == false) {
throw new Error('not ready');
} else {
return 'ready'
}
}
};
const proxy = new Proxy(o1, handler);
proxy; // raises 'not ready'
评估proxy
会引发错误“未准备好”,即使它不是属性访问。在评估对代理的引用时,如何防止引发错误?在没有分配的情况下,这会导致错误。
它似乎与这个bug有关:https://github/nodejs/node/issues/10731
我发现的最好的工作是专门忽略节点检查:
const handler = {
get(target, propKey, receiver) {
if (propKey != util.inspect.custom &&
propKey != 'inspect' &&
propKey != Symbol.toStringTag){
if (target.ready == false) {
throw new Error('not ready');
} else {
return 'ready'
}
}
}
};
或者,如果你知道你关心的密钥列表,那么只需检查那些而不是排除。
在评估代理时调用代理获取处理程序
我定义了一个代理如下:
const o1 = {
ready: false
};
setTimeout(() => {
o1.ready = true;
}, 1000000000);
const handler = {
get(target, propKey, receiver) {
if (target.ready == false) {
throw new Error('not ready');
} else {
return 'ready'
}
}
};
const proxy = new Proxy(o1, handler);
proxy; // raises 'not ready'
评估proxy
会引发错误“未准备好”,即使它不是属性访问。在评估对代理的引用时,如何防止引发错误?在没有分配的情况下,这会导致错误。
它似乎与这个bug有关:https://github/nodejs/node/issues/10731
我发现的最好的工作是专门忽略节点检查:
const handler = {
get(target, propKey, receiver) {
if (propKey != util.inspect.custom &&
propKey != 'inspect' &&
propKey != Symbol.toStringTag){
if (target.ready == false) {
throw new Error('not ready');
} else {
return 'ready'
}
}
}
};
或者,如果你知道你关心的密钥列表,那么只需检查那些而不是排除。