Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2015, 21:23
Аспирант
Посмотреть профиль Найти все сообщения от newuser1001
 
Регистрация: 24.03.2015
Сообщений: 92

Асинхронность в стиле XMLHttpRequest
Сейчас модно писать асинхронный код в виде какого то дерьма из так-называемых коллбэков (я имею в виду пробрасывание из функции в функцию, а-ля CPS). И все ноют, как мол, избавиться от этого говна, изобретают какие то уродливые велосипеды. А между тем, безо всяких велосипедов в JS есть нормальный способ писать асинхронный код, и был всегда, вспоминаем XMLHttpRequest. То есть, не то чтоб совсем без коллбэков, но нормально структуированный, в объектном стиле, как и подобает нормальному ООП-языку. Например:
File={
 open: function(fileName){
   var o=Object.create(this)
   o.file=fileName
   return o
 },
 read: function(){
   fs.readFile(this.file, "ascii", this.on())
 }, 
  onErr: function(err){console.log(err)}, // default on error
  onSuccess: function(data){console.log(data)}, // default on success
  on: function(){
   return function(err, data){if(err) this.onErr(err); this.onSuccess(data)}.bind(this)},
}

tmp=File.open("tmp.txt")
tmp.read()

tmp=File.open("tmp.txt")
tmp.onSuccess=function(data){console.log("bla-bla-bla\n"+data)}
tmp.read()

// ::: foo
// ::: bar
// ::: 
// ::: bla-bla-bla
// ::: foo
// ::: bar


ИМХО, это единственный нормальный вариант, в духе JS. Все остальное — для безмозглых фапе-хипстеров, которые любят обмазаться говном, а потом ищут способы отмыться.

Почему этот стиль не прижился?

Последний раз редактировалось newuser1001, 29.03.2015 в 21:39.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XMLHttpRequest передача массива серверу JaneLane AJAX и COMET 5 16.05.2014 12:09
запрос на другой сайт XMLHttpRequest vscorpion Internet Explorer 9 24.12.2013 16:46
xmlHttpRequest подскажите czp AJAX и COMET 4 10.12.2012 23:23
XMLHttpRequest status=0, хотя запрос проходит. arigasa AJAX и COMET 4 15.02.2011 20:14
Создание и уничтожение XMLHttpRequest Vlas AJAX и COMET 9 22.05.2009 12:38