如果Titanful Resting API调用失败怎么办?

bobo2000

当前,我显示一条警报,通知用户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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果completableFuture失败怎么办?

来自分类Dev

如果<iostream>函数失败怎么办?

来自分类Dev

如果域事件失败了怎么办?

来自分类Dev

如果静态类Load失败怎么办

来自分类Dev

如果CImage :: Load方法失败怎么办?

来自分类Dev

如果建立连接失败,该怎么办?

来自分类Dev

如果我不调用close(fd)函数怎么办?

来自分类Dev

“如果!”怎么办?意思是?

来自分类Dev

如果我的 Web API 不是简单的 CRUD 怎么办?

来自分类Dev

如果我不必多次调用ngAfterContentChecked()和ngAfterViewChecked()调用该怎么办

来自分类Dev

如果AsyncTask被取消,该怎么办?

来自分类Dev

如果我跑得太久怎么办?

来自分类Dev

如果lua被信号打断怎么办?

来自分类Dev

如果trustStore证书过期怎么办?

来自分类Dev

如果堆栈内存已满怎么办

来自分类Dev

如果不包括GetRNGstate()怎么办?

来自分类Dev

如果工作完成了怎么办

来自分类Dev

如果AsyncTask被取消,该怎么办?

来自分类Dev

如果trustStore证书过期怎么办?

来自分类Dev

Maven:如果缺少Javadoc怎么办?

来自分类Dev

Python:如果数字太长怎么办?

来自分类Dev

短路:如果出现短路怎么办?

来自分类Dev

如果令牌过期怎么办

来自分类Dev

如果Cassandra报告失败但做了部分写入,该怎么办?

来自分类Dev

如果git-am失败并显示“索引中不存在”怎么办?

来自分类Dev

唤醒失败:如果生产者首先获得互斥锁,该怎么办?

来自分类Dev

如果Pester断言失败,该如何指定该怎么办?

来自分类Dev

唤醒失败:如果生产者首先获得互斥锁,该怎么办?

来自分类Dev

如果git-am失败并显示“索引中不存在”怎么办?

Related 相关文章

热门标签

归档