Взаимодействуем с бекендом

August 12, 2015 · View on GitHub


в разработке


План:

  1. Преположим есть путь к ручкам сохранения и чтения данных. Какое-то api
  2. дергаем их $.ajax
  3. Нельзя дернуть то, что лежит на другом домене. Ошибка в браузере, текст.
  4. Нужно сделать прокисирующие ручки на сервере и уже они будут ходить по http на другой домен.
  5. Как бы хотелось, чтобы они работали? В виде цепочки методов, как мы привыкли в jQuery
do()
.then()
.fail();

В then параметром то, что вернул do(). Метод fail вызовется, если do упал с ошибкой.

Тогда мы написали бы так:

request('путь к серверным ручкам')
.then(function () {
    this.emit('saved')
})
.fail(function () {
    this.emit('not-saved')
});

Цепочка методов, совсем как в jQuery. ТОлько там выполнялись бы все три метода подряд, а здесь выполнится первый, а потом или второй или третий.

На деле, мы только что описали Promises, Обещания. На человеческом языке это выглядело бы так:

обещаю вызвать('путь к серверным ручкам')
.в_случае_успеха_вызову(function () {
    this.emit('saved')
})
.в_случае_провала_вызову(function () {
    this.emit('not-saved')
});
  1. перепишем Модель, как нам бы хотелось, чтобы она работала. Пишем на промисах методы _setUserData и _getUserData Предположим, что такой модуль есть и он называется просто - api.
api
    .exec('путь к серверным ручкам')
    .then(function () {
        this.emit('saved')
    })
    .fail(function () {
        this.emit('not-saved')
    });
  1. Такой модуль действительно есть, называется BLA добавляем в package.json npm update рассказываю, что он умеет, как работает в общих чертах.