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

x-yuri 21.12.2011 19:06

Цитата:

Сообщение от vflash
сейчас подумываю упростить. получается что-та вроде цепочки с паузами.

ничего не понял

FINoM, если надо передать данные через несколько функций их прийдется "протаскивать" через аргументы. Лучше наделить цепочку состоянием, что-то типа:
this.state('var', ...);   // изменение переменной
this.state('var')   // получение значения переменной


и... названия какие-то странные, может лучше так:
chain(function() {
    ...
}).then(function() {
    ...
}).then(function() {
    ...
});

devote 21.12.2011 19:32

ниче не понял, а зачем вообще это? вызывать четко по очереди или просто нужна задержка между вызовами функций?

Gozar 21.12.2011 19:33

вызывать четко по очереди

у меня вывод такой FF:
Run 1
undefined
Run 2, a=1 b=2
Run 3
End 3
Run 4
Last one

devote 21.12.2011 19:37

хм... а разве обычный вызов:
func1();
func2();
func3();
не по очереди вызываются?

Gozar 21.12.2011 19:47

devote,
setTimeout в одну из первых двух поставь

devote 21.12.2011 20:02

Цитата:

Сообщение от Gozar
setTimeout в одну из первых двух поставь

А ну понятно.

FINoM 22.12.2011 02:59

Цитата:

Сообщение от x-yuri
this.state('var', ...);   // изменение переменной
this.state('var')   // получение значения переменной

Эм, не понял.
Цитата:

Сообщение от x-yuri
названия какие-то странные, может лучше так

У меня не очень хорошо с английским и мне показалось ждать().ждать().ждать() достаточно логичным. Думаешь бред?

x-yuri 22.12.2011 07:34

devote, это актуальнее для nodejs, хоть и на клиенте может быть надо.

Цитата:

Сообщение от FINoM
Эм, не понял.

this.state = function(name, value) {
    if (arguments.length) {
        this._state[name] = value;
        return this;
    } else {
        return this._state[name];
    }
}


Цитата:

Сообщение от FINoM
У меня не очень хорошо с английским и мне показалось ждать().ждать().ждать() достаточно логичным. Думаешь бред?

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

FINoM 22.12.2011 08:05

Теперь не обязательно заботиться о целостности цепочки: http://jsfiddle.net/finom/XSGub/50/

FINoM 22.12.2011 08:06

x-yuri, я тебе позже отвечу, а то мозг не варит.


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