目前,我显示一条警告,通知用户API调用失败。但是,有些情况下我需要API调用才能成功,否则数据完整性会受到影响。
//key press changed
$.txtNick.addEventListener('return', function(e) {
//create a collection
var usersCollection = Alloy.Collections.user;
var tempJSON = {};
usersCollection.fetch({
success : function() {
var getModel = usersCollection.where(checkFBAccountIdJSON);
for (var i in getModel) {
//update local model
getModel[i].set('nickname', $.txtNick.value);
//save changes
getModel[i].save();
}
console.log(usersCollection.toJSON());
tempJSON = usersCollection.toJSON();
//post to API
if (Titanium.Network.online) {
//console.log(tempJSON);
apiHelper.APIPostRequest(Alloy.GlobalsAPI + '/user', tempJSON, function(e) {
var status = this.status;
if (status == 200) {
console.log('nickname posted');
}
}, function(err) {
alert('Unknown error from api');
});
} else {
alert('No internet connection found');
}
},
error : function() {
// something is wrong..
}
});
//end
});
在这种情况下,如果有人更改了他们的昵称,首先更新本地模型,然后将模型中更新的对象发送到服务器。我将来可能遇到的问题是,如果未成功进行对服务器的API调用,这意味着存储在服务器中的昵称与模型中存储的昵称已过时。
处理这类情况的最佳方法是什么?感谢
答案 0 :(得分:0)
您有本地更新(模型)和远程更新(API)。有可能你总是可以在本地更新,而不是总是远程执行,所以,我的建议是:尝试通过你的API调用更新,如果成功,你在本地更新。如果API更新失败,请不要在本地更新。
这样你就可以原子地绑定两个操作(排序)。