30.01.2014, 21:44
|
Профессор
|
|
Регистрация: 08.01.2014
Сообщений: 354
|
|
ну если ты хочешь обрабатывать брошенные api ошибки конструкцией try catch, то создавай свой класс ошибок.
Нормальный бы пасан создал класс
function ServerAPI (url){
this.getComments = function(){ /*запрос на сервер*/ }
this.postComment = function(text){ /*запрос на сервер*/ }
}
и оба эти метода возвращают промис обьект. у которого есть 2 метода "then" и "error". типа вот так:
var api = ServerAPI('/api.php');
api.postComment('ololo')
.then(function(){ alert('отправлено') })
.error(function(){ alert('ошибка') });
суть http://habrahabr.ru/post/209662/
Последний раз редактировалось Maxmaxmaximus7, 30.01.2014 в 21:51.
|
|
30.01.2014, 22:07
|
Профессор
|
|
Регистрация: 08.01.2014
Сообщений: 354
|
|
или создай класс для создания ассинхронных API к чему либо)) 'bv классом можно будет конструировать апихи ^_^
// поехали
function API( props ) {
/* подумай что сюда нужно написать =) тут вся магия */
}
var api = new API( {
url: 'api.php',
getComments: function( resolve, reject ) {
var http = new XMLHttpRequest();
http.onerror = function() {
reject();
};
http.onload = function() {
if (http.status === 200) {
resolve();
}
else {
reject();
}
};
http.open( 'GET', this.url + '?comments' );
http.send( null );
}
} );
Последний раз редактировалось Maxmaxmaximus7, 30.01.2014 в 22:09.
|
|
30.01.2014, 22:15
|
Профессор
|
|
Регистрация: 08.01.2014
Сообщений: 354
|
|
можно чо нить типа того намутить чтобы каждый раз не описывать создание этого обьекта запросов ^_^
var api = new API( {
url: 'api.php',
sendRequest: function( resolve, reject, requestParams ) {
var http = new XMLHttpRequest();
http.open( 'GET', this.url + '?' + requestParams );
http.onerror = reject;
http.onload = function() {
http.status === 200 ? resolve() : reject();
};
http.send( null );
},
getComments: function( resolve, reject ) {
return this.sendRequest( 'comments' ).then( resolve ).error( reject );
}
} );
|
|
30.01.2014, 22:18
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Maxmaxmaximus7, мне нужно прочитать json файл.
сделал так
function HTTPError(obj) {
if(!obj) return;
if(obj.hasOwnProperty("code")
&& obj.hasOwnProperty("text")) {
obj.text = this.messages[obj.code] || obj.text;
}
for(var key in obj){
if(obj.hasOwnProperty(key))
this[key] = obj[key];
}
};
HTTPError.prototype.messages = Object.create({
"404": "Страница не найдена"
});
pages.prototype.getFile = function(src, onload, onerror) {
var xhr = new XMLHttpRequest();
xhr._src = src;
xhr.onreadystatechange = function(e){
if(this.readyState != 4) return;
if(xhr.status == 200) {
return onload.call(this, e);
}
onerror.call(this, new HTTPError({
text: this.statusText,
code: this.status,
object: this
}), e);
};
xhr.open("GET", src);
xhr.send(null);
return xhr;
};
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
30.01.2014, 22:18
|
Профессор
|
|
Регистрация: 08.01.2014
Сообщений: 354
|
|
чтобы понять всю эту истину тебе надо прочесть ту статью про промисы и написать свой велосипед) я тоже думаю написать свой чтобы скилл поднять, хотя хер знат подымет ли, я вроде уже знаю как это все написать, не оказалось бы это пустой тратой времени
статья http://habrahabr.ru/post/209662/
|
|
30.01.2014, 22:20
|
Профессор
|
|
Регистрация: 08.01.2014
Сообщений: 354
|
|
но ты сделал тупо, тебе придется ловить исключения а это уродливо смотрится, вся конструкция трай катч уродливая.
|
|
30.01.2014, 22:23
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Maxmaxmaximus7
|
но ты сделал тупо, тебе придется ловить исключения а это уродливо смотрится, вся конструкция трай катч уродливая.
|
зачем ловить? Запрос ассинхронный, а в консоль ввыведит всеравно, поэтому ловить не вижу смысла.
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
30.01.2014, 22:34
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Не могу понять что за хрень с кодировкой в js файле есть русская строка, и при попытки ее вывести получаю крякозябры, пробыл менять кодировку на 1251, не помогло, при том что в *.html все норм. wtf?
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
30.01.2014, 22:37
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
меняй на UTF-8
вообще, юзай везде UTF-8 и не знай проблем
|
|
30.01.2014, 22:40
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от melky
|
меняй на UTF-8
вообще, юзай везде UTF-8 и не знай проблем
|
эм, у меня по умолчанию стояла utf-8 из за того что не работало поставил 1251, вот в чем проблема...
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
|
|