Angular返回模拟$ http.get

时间:2016-04-24 14:59:28

标签: angularjs angular-promise

我正在尝试搜索只有在参数包含6个或更多字符时才会调用并返回ajax调用的表单。

在我的控制器中,我有一个简单的功能。

function getByParam(param) {
    if (param.length >= 6) {
        return $http.get('https://example.com/endpoint/' + param);
    } else {
        return noItems();
    }
}

问题在于返回带有空响应集的promise。无论我试图尝试什么都会导致错误。

myController.getByParam(param).success is not a function

目前我将此作为noItems()函数。

function noItems() {

    var promise = Promise(function(resolve, reject) {

        if (true) {
            resolve();
        } else {
            reject();
        }
    }).then(function(){
        var emptyResponse = {success:true, response:{records:[]}}
        return emptyResponse
    });

    return promise
}

我看过涉及$httpBackend的答案,但这看起来有点矫枉过正。我也看到了使用$timeout的建议,但我再次错过了让它发挥作用的建议。

1 个答案:

答案 0 :(得分:1)

这里我使用$ q而不是Promise做了一个例子(代码Link to the example似乎更清晰一点,如果有人向您的服务器发出http请求,您应该尝试从服务器返回错误使用你的应用程序会崩溃,因为你正在对6个字符进行验证。

如果服务器执行此验证,它应该返回错误消息或其他内容,因此您不必在客户端执行该逻辑。

我假设服务器没有这个并给出一些建议