目前我不知道这是 Dojo 问题、浏览器问题还是两者兼而有之。
我有一个项目的 dojo.store.JsonRest 数据存储:
//Create stores
var json = new JsonRest(options);
//Memory store
var memory = Observable(new Memory({}));
//Observable cache
var cache = new Cache(json, memory);
项目存储可能会同时与不同的用户共享,因此存储会通过发布以下内容定期更新:
store.query({..})
当我想向其中添加新项目时,我使用
dojo.xhr('POST',{
url:...,
postData:...,
handleAs:'json',
headers:{...},
failOk:true,
timeout:15*1000
});
这工作正常。但是,我想优雅地处理在失去互联网连接期间发帖的情况。特别是,我不希望商店在再次建立连接时自动尝试再次发布;我希望用户手动重试。
在 Chrome 中,POST 似乎已中止,并且无论随后再次建立 Internet 连接,POST 中的延迟对象似乎都被丢弃了,并且新项目永远不会添加到数据存储中。
在 Firefox 中,POST 似乎已中止。但是当刷新数据存储时,例如通过调用:
store.query({...})
然后将 POST 已中止的新项目添加到存储中。当再次建立互联网连接时,就好像 query() 调用正在悄悄地将新项目添加到数据存储中。
我没有在 Chrome 中观察到这种行为。为了在不同的浏览器中获得统一的行为,我想知道是否有办法确保一旦 POST 被中止,它的存在和内存在 Firefox 中完全消失。