Взаимодействуем с бекендом
August 12, 2015 · View on GitHub
в разработке
План:
- Преположим есть путь к ручкам сохранения и чтения данных. Какое-то api
- дергаем их $.ajax
- Нельзя дернуть то, что лежит на другом домене. Ошибка в браузере, текст.
- Нужно сделать прокисирующие ручки на сервере и уже они будут ходить по http на другой домен.
- Как бы хотелось, чтобы они работали? В виде цепочки методов, как мы привыкли в 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')
});
- перепишем Модель, как нам бы хотелось, чтобы она работала. Пишем на промисах методы
_setUserDataи_getUserDataПредположим, что такой модуль есть и он называется просто -api.
api
.exec('путь к серверным ручкам')
.then(function () {
this.emit('saved')
})
.fail(function () {
this.emit('not-saved')
});
- Такой модуль действительно есть, называется BLA добавляем в package.json npm update рассказываю, что он умеет, как работает в общих чертах.