<img src="https://solution-community.wps.cn/uploads/post/5yD5Q8HbaMb.png" alt="image.png"/> 我外部有一个按钮点击调用图上方法,第一次正常执行,当我再次点击的时候,执行到第一个jsapi的时候后面的代码均不执行,就好像卡在了这个方法里面一样,也不报错,try catch 也没法捕获异常,就连finally的代码也不执行。
<img src="https://solution-community.wps.cn/uploads/post/5yD5Q8HbaMb.png" alt="image.png"/> 我外部有一个按钮点击调用图上方法,第一次正常执行,当我再次点击的时候,执行到第一个jsapi的时候后面的代码均不执行,就好像卡在了这个方法里面一样,也不报错,try catch 也没法捕获异常,就连finally的代码也不执行。
同遇到过,调研jssdk的各种方法,都只有第一次执行,各种修改都无效,卡在了await。
const withTimeout = (promise: any, ms: number) => {
return Promise.race([promise, new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), ms))]);
};
const handleTestRead = async (res: boolean) => {
if (!instanceRef.current || !appRef.current) {
message.error('文档实例不存在');
return;
}
const curApp = appRef.current;
try {
console.log(res, 'handleTestRead');
await withTimeout(
curApp.ActiveDocument.SetReadOnly({
Value: res,
}),
5000,
);
console.log('xxx');
} catch (err) {
console.error('获取 ReadOnly 超时或失败:', err);
message.error('操作超时,请刷新页面重试');
}
};
很简单的一个readOnly设置,第二次执行必定是超时。一开始怀疑过我vite7的框架问题(因为我换webpack是正常的),但是相同代码给同事执行正常,我启动的vite服务换成Edge浏览器也正常。因为两个浏览器相同版本,我开始怀疑谷歌插件有影响,把react devtool插件删了,就正常了