在再次尝试数据库命中之前使用$ timeout等待

时间:2014-08-25 08:11:08

标签: angularjs timeout

我正在添加我的数据库,但数据库可能正在等待文件完成上传。所以,我的解决方案是尝试添加,如果文件不存在,我的服务器返回404.如果我收到404错误,我等待1秒再试一次。

这是我的想法:

$scope.add() = function() {
    db.add(uuid).then(
        function(response) {
            // Add success!
        },
        function(error) {
            if (error.status === 404) {
                $timeout($scope.add, 1000);
            }
        }
};

这是正确的方法吗?感觉不对,但我不确定。

2 个答案:

答案 0 :(得分:0)

这绝对不是正确的方式^^你应该在上传文件后使用回调。

您上传文件并在回调中调用addDb函数

答案 1 :(得分:0)

这实际上是一种合法的方式,除非你在超时的回调中不需要括号。使用:$timeout($scope.add, 1000);
我还会添加一些重试计数器(例如尝试3次并退出),这样你就不会进入无限循环。