javascript Officejs word加载项,方法saveAsync不工作

3gtaxfhh  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(88)

从OfficeJS开始我遇到了一个非常奇怪的问题,有一些情况下,Office.context.document.settings.saveAsync不保存,但它不会抛出任何错误。为什么会这样?我没有找到一个模式来复制它,它只是有时发生,如果我做了一个重新加载它修复它。我使用的是带有Officejs的Angular 7。
Word Version 2304 Build 16.0.16327.20324)64位。
这就是我如何节省:

protected saveSetting<T>(key, val): Observable<T> {
  return new Observable<T>(subscriber => { 
    try {                 
      Office.context.document.settings.refreshAsync((asyncResult) => { 
        if (asyncResult.status === Office.AsyncResultStatus.Failed) { 
          console.log('saveAsync failed: ' + asyncResult.error.message);              
        } 
        Office.context.document.settings.set(key, val); 
        Office.context.document.settings.saveAsync((result) => { 
          if (result.status === Office.AsyncResultStatus.Failed) { 
            console.log('saveAsync failed: ' + result.error.message);                  
          } 
          subscriber.next(val); 
          subscriber.complete();              
        });          
      });       
    } catch (e) { 
      subscriber.error('Error saving setting ' + key); 
      subscriber.complete();       
    } 
  }); 
}

我是这样得到值的:

protected getSetting<T>(key): Observable<T> {
  return new Observable<T>(subscriber => { 
    try { 
      Office.context.document.settings.refreshAsync((asyncResult) => { 
        if (asyncResult.status === Office.AsyncResultStatus.Failed) { 
          console.log('saveAsync failed: ' + asyncResult.error.message);             
        }  
        subscriber.next(Office.context.document.settings.get(key)); 
        return subscriber.complete();          
      });      
    } catch (e) { 
      subscriber.next(null); 
      return subscriber.complete();      
    }   
  }); 
}

谢谢!
我尝试调试,它从来没有返回错误,它似乎总是保存,但它没有。当我想执行get时,它返回null,因为它以前从未保存过。

8ehkhllq

8ehkhllq1#

你的代码看起来都是正确的,一个可疑的部分是你可能在saveSetting之后很快调用getSetting。你能试着把getSetting放到saveSetting的回调函数中吗?这意味着saveSetting是异步的,你应该确保saveSetting在你可以getSetting之前完成。

相关问题