| 
	| 
	
	| 
		
	| 
			
			 
			
				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, вот в чем проблема...
				__________________ 
	
 
	| Цитата: |  
	| Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку. |  
	
 |  |  |  |