jsapi里面的方法只执行一次

阅读次数 9

<img src="https://solution-community.wps.cn/uploads/post/5yD5Q8HbaMb.png" alt="image.png"/> 我外部有一个按钮点击调用图上方法,第一次正常执行,当我再次点击的时候,执行到第一个jsapi的时候后面的代码均不执行,就好像卡在了这个方法里面一样,也不报错,try catch 也没法捕获异常,就连finally的代码也不执行。

2 Answers

联系了他们开发人员,是chrome插件影响到了react和vue的devtool都会影响

同遇到过,调研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插件删了,就正常了