我定义了一个代理如下:
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
会引发错误'未准备好',即使它不是属性访问权限。在评估对代理的引用时,如何防止引发错误?在没有分配的情况下,这会导致错误。
答案 0 :(得分:1)
似乎与此错误相关:https://github.com/nodejs/node/issues/10731
我发现的最佳工作是明确忽略节点检查:
@echo off
echo Content-Type: text/html
echo.
CALL PDF_MOVE.bat || goto error
echo file copy successfull
goto :EOF
:error
echo file copy failure
或者如果你知道你关心的密钥列表,那么只需检查那些而不是排除。
答案 1 :(得分:1)
显然,您正在REPL中对此进行评估,其中最终的proxy;
语句生成代码的结果值,并将其记录到控制台。记录它将访问预期的属性。
但是,你真的不应该在这里使用代理。代理应该单独处理不同的属性,但是您的属性似乎只关心ready
属性。更简单的getter会更合适:
const o1 = {
ready: false
};
setTimeout(() => {
o1.ready = true;
}, 1000000000);
const res = { // instead of the `proxy` object
get ready() {
if (o1.ready == false) {
throw new Error('not ready');
} else {
return 'ready'
}
}
};
res.ready // either throws or yields the string "ready"