Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Мой синхронный костыль (https://javascript.ru/forum/project/24115-mojj-sinkhronnyjj-kostyl.html)

FINoM 23.12.2011 17:47

http://jsfiddle.net/XSGub/56/ — вот, вынес что мог в прототипы. Фигня в том, что когда вызывается runNext, он выполняется в контексте window. Заставлять писать кого-то runNext.call(this) — неправильно. A Function.prototype.bind слишком крупный, если хотим сделать кроссбраузерно.

FINoM 23.12.2011 17:49

Так что нужно обязательно замыкать callback в конструкторе. Есть идеи?

melky 23.12.2011 18:07

Цитата:

Сообщение от FINoM (Сообщение 145510)
какие есть альтернативы? Мутулз — те же яйца, прототайп — вырвиглазное говнище..

только бок у них более "объектно-ориентированный" и гибкий, хм...
правда, если рассматривать кверю не как функцию ($(selector).method()), а как объект ($.css(element, prop)), то гибкость повышается... но этот пост вообще не об этом!

/* что такое JavascriptMVC ? кто может вкратце обьяснить его суть? */

я погуглил насчёт альтернативы jquery и мне понравился qooxdoo. драг'н'дроп и другие плюшки их коробки.есть механизм поиска эл-ов по селектору (взят из Mootools). расскажите, что вы думаете об этом фреймворке библиотеке.

FINoM 23.12.2011 20:26

wait = function(first) {
        return new wait.Init(first);
    }

    wait.Init = function(first) {
        var self = this;
        this.callbackCaller = function() {
            self.callback.apply(self, arguments);
        }

        first.call(this, this.callbackCaller);
    }

    wait.Init.prototype = {
        deferred: [],
        callback: function() {
            this.args = [].slice.call(arguments);
            this.args.unshift(this.callbackCaller);
            if (this.deferred.length) {
                this.done = false;
                this.deferred[0].apply(this, this.args);
                this.deferred.shift();
            }
            if (!this.deferred.length) {
                this.done = true;
            }

        },

        wait: function(run) {

            if (this.done) {
                this.done = false;
                run.apply(this, this.args);

            } else {
                this.deferred.push(run);
            }
            return this;
        },
        data: function(item, value) {

            if (arguments.length === 2) {
                this.data[item] = value;
            } else {
                return this.data[item];
            }
        }
    }
Так и не придумал, как коллбек всунуть в прототип: http://jsfiddle.net/finom/XSGub/64/

x-yuri 23.12.2011 20:29

Цитата:

Сообщение от FINoM
Но мутулз сейчас используется редко, как и прототайп.

ну я понял, что для тебя важна популярность

Цитата:

Сообщение от FINoM
Так что нужно обязательно замыкать callback в конструкторе. Есть идеи?

извини, не хочется вникать в код

Цитата:

Сообщение от melky
/* что такое JavascriptMVC ? кто может вкратце обьяснить его суть? */

jquery done serious надстройка над jquery для разработки больших приложений, похоже, я не пробовал

Цитата:

Сообщение от melky
я погуглил насчёт альтернативы jquery и мне понравился qooxdoo. драг'н'дроп и другие плюшки их коробки.есть механизм поиска эл-ов по селектору (взят из Mootools). расскажите, что вы думаете об этом фреймворке библиотеке.

надо смотреть

FINoM 23.12.2011 20:34

Цитата:

Сообщение от x-yuri
ну я понял, что для тебя важна популярность

Мне важно сколько я на этом заработаю :D

--------------------------

Пытаюсь разобраться в backbonejs, смотрю примеры, понимаю как они работают, но не понимаю главного: зачем они так работают и как строить хваленные масштабные приложения с помощью сабжа. Может есть какие-нибудь статьи или книга "для чайников"?

x-yuri 23.12.2011 20:59

backbone.js и javascriptMVC - близкие вещи, я сам не пробовал, но есть некто DjDiablo, который всячески советовал. Возможно, к этому приходишь, когда появляется желание покрыть код тестами. Наверное, это имеет смысл делать, когда у тебя скорее веб-приложение, чем сайт.

FINoM 23.12.2011 21:04

Цитата:

Сообщение от x-yuri
Наверное, это имеет смысл делать, когда у тебя скорее веб-приложение, чем сайт.

Щас делаю онлайн плеер (с плейлистами, жанрами, тегами, обложками и еще кучей всего), но вот код немножечко превращается в кашу, уже два раза переписывал. Хотелось бы впредь не долбаться над переписыванием, когда заказчику хочется добавить очередную функцию.

x-yuri 23.12.2011 22:43

скорее всего ты слишком упрощаешь. А тесты должны помогать уменьшить количество ошибок при изменениях. Под веб-приложениям я понимаю что-то, что работает в пределах одной страницы, gmail, например. По твоему описанию непонятно, как у тебя. Можно плеер сделать в виде сайта, хотя лучше сделать без перезагрузки - музыка будет прерываться между страницами.

FINoM 23.12.2011 23:54

Да, это веб приложение на одной странице.
Цитата:

Сообщение от x-yuri
А тесты должны помогать уменьшить количество ошибок при изменениях.

Юнит тестирование? Я так и не понял, как правильно их применять на таких проектах.
Цитата:

Сообщение от x-yuri
скорее всего ты слишком упрощаешь.

Наверно, особенно не глядя в код :)


Часовой пояс GMT +3, время: 11:26.