当前,我显示一条警报,通知用户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调用,这意味着存储在服务器中的昵称与模型中存储的昵称已经过时。
处理这类情况的最佳方法是什么?谢谢
您有一个本地更新(模型)和一个远程更新(API)。很有可能您将始终能够在本地进行更新,而并非总是能够进行远程更新,因此,我的建议是:尝试通过您的API调用进行更新,如果成功,则可以在本地进行更新。如果API更新失败,请不要在本地更新。
这样,您将两个操作原子地绑定在一起(某种程度上)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句