Skip to content

Conversation

@chestozo
Copy link
Contributor

@chestozo chestozo commented Mar 9, 2014

В таком примере:

de.func(
    function(params, context) {
        console.log('fact', params);
    },
    {
        params: {
            id: '777'
        },
        before: function(params, context) {
            console.log('before', params);
        },
        after: function(params, context, result) {
            console.log('after', params);
        }
    }
)

получаю такой вывод:

before {}
fact { id: 777 }
after {}

Это ведь баг, да? )

@chestozo
Copy link
Contributor Author

chestozo commented Mar 9, 2014

Может вообще не использовать _params, а сразу менять params?

@chestozo
Copy link
Contributor Author

chestozo commented Mar 9, 2014

/cc @pasaran

@pasaran
Copy link
Owner

pasaran commented Mar 10, 2014

Наверное, баг.

@chestozo
Copy link
Contributor Author

Единственное, что меня смущает, это то, что мы либо имеем доступ к начальным параметрам блока, либо к параметрам блока, с которыми он выполняется.
И в какой-то момент может захотеться иметь доступ к обоим.

@chestozo
Copy link
Contributor Author

Подмёржишь?

@pasaran
Copy link
Owner

pasaran commented Mar 11, 2014

Надо почитать #10 и понять, не ломается ли чего.
Там не просто так были разные параметры, может быть.

@chestozo
Copy link
Contributor Author

Я посмотрел.
Сейчас всё работает так (метод de.Block.prototype.run):

guard(params, context)
before(params, context)
key(params, context)
    блока нет в кэше:
        params(params, context) => _params
        _run(_params)
    блок есть в кэш: дастаём из кэша
select(resultObject, context)
after(params, context, result)
result(resultObject, context, params)
template(params, context)

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

Куда-то его хочется положить.
Может быть в context.runParams?

@chestozo
Copy link
Contributor Author

Ну или context.run.params )

@chestozo
Copy link
Contributor Author

Как вариант временного решения сделал нужные options.params - функциями и логирую параметры там.
Но в каком-то виде доступ к runParams иметь хочется.

@pasaran
Copy link
Owner

pasaran commented Mar 12, 2014

Ну ок. Можно в контексте где-нить все хранить.

2014-03-12 13:22 GMT+04:00 chestozo notifications@github.com:

Как вариант временного решения сделал нужные options.params - функциями и
логирую параметры там.
Но в каком-то виде доступ к runParams иметь хочется.


Reply to this email directly or view it on GitHubhttps://github.com//pull/69#issuecomment-37388739
.

@pasaran
Copy link
Owner

pasaran commented Mar 24, 2014

На самом деле в context'е нельзя хранить.
Потому что блоков может быть много, а контекст общий на всех — а точнее контекст один на реквест.

@chestozo
Copy link
Contributor Author

Да, ты прав.
И доступа к this (текущему исполняемому блоку) тоже у нас нет.
Может везде в callback-и передавать this блока и туда же прописать runParams?

@pasaran
Copy link
Owner

pasaran commented Mar 24, 2014

Доступ к this тебе не поможет. Потому что там вообще нет никаких параметров.

Короче, сейчас нет никакой сущности, представляющей собой запущеный блок. Ну точнее есть promise — это все.

@chestozo
Copy link
Contributor Author

А может быть в params._params положить?
Тут: https://github.com/pasaran/descript/blob/master/lib/de.block.js#L241

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants