outlook加载项中的RoamingSettings似乎工作不正常



我目前正在Outlook中使用RoamingSettings来存储两个值。这是我用来存储值的片段,

Office.context.roamingSettings.set("email", email);
Office.context.roamingSettings.saveAsync(function(res){console.log(res);});
Office.context.roamingSettings.set("name", name);
Office.context.roamingSettings.saveAsync(function(res){console.log(res);});

第一次运行时,两个值都被保存了。然后我用这个片段删除了两个值,

Office.context.roamingSettings.remove("email");
Office.context.roamingSettings.saveAsync(function(res){console.log(res);});
Office.context.roamingSettings.remove("name");
Office.context.roamingSettings.saveAsync(function(res){console.log(res);});

然后再次尝试添加这两个值,我看到只有"名称"被存储。我发现有时它有效(两个值都是存储(,而且大多数时候只保存"name"值。

我注意到的另一件事是,我用密钥"userEmail"保存了另一个密钥对来检查漫游设置,即使我使用了remove('userEmail')saveAsync(),我也无法将其从存储中删除

这是因为saveAsync的异步特性。等待保存或在所有编辑后保存。如果不等待saveAsync完成,则会覆盖漫游设置。

Office.context.roamingSettings.set("email", email);
Office.context.roamingSettings.saveAsync(function(res){
//Wait for save - callback method.
console.log(res);
Office.context.roamingSettings.set("name", name); 
Office.context.roamingSettings.saveAsync(function(res) {
console.log(res);
});
})

Office.context.roamingSettings.set("email", email);
Office.context.roamingSettings.set("name", name);
Office.context.roamingSettings.saveAsync(function(res){console.log(res);})

最新更新