Угловой возврат макет $ http.get

0

Я пытаюсь найти форму, которая будет вызывать и возвращать вызов ajax, только если параметр содержит 6 или более символов.

В моем контроллере у меня есть простая функция.

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

Проблема заключается в возвращении обещания с пустым набором ответов. Независимо от того, что я, кажется, пытаюсь получить в результате ошибки.

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 но опять же, я что-то упустил, чтобы заставить его работать.

  • 0
    Что вы пробовали? Были ли у вас проблемы с spyOn('$http, 'get') ? $ httpBackend не является чрезмерным, но рекомендуемым способом HTTP-макетов в Angular.
  • 0
    Моя проблема в том, что это что-то тривиальное не должно действительно требовать издевательства над http-запросом Я борюсь с тем, как вернуть простое обещание с выводом, который будет обработан таким же образом.
Показать ещё 1 комментарий
Теги:
angular-promise

1 ответ

1

Здесь я сделал пример, используя $ q вместо Promise (кажется немного более разборчивым код Ссылка на пример, также вы должны попытаться вернуть ошибку с сервера, если кто-то делает HTTP-запрос на ваш сервер без использования вашего приложения сбой, потому что вы выполняли проверки 6 символов.

Если сервер выполняет эту проверку, он должен вернуть сообщение об ошибке или что-то еще, поэтому вам не нужно делать эту логику на своей стороне клиента.

Я предполагаю, что сервер не делает этого и дает некоторые советы

  • 0
    Да, сервер вернет ошибку, но я бы хотел полностью избежать ненужных сетевых запросов.
  • 0
    Хорошо, тогда вы можете использовать мой пример, но помните, что если когда-нибудь сервер начнет принимать менее 6 параметров, то вам придется изменить код на стороне клиента, это проблема с двойной проверкой (на стороне сервера и на стороне клиента), хорошо, что вы улучшаете пользовательский опыт
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню