Добрый день.
Заместил схемку LeadAccountProfileSchema - вызываю метод FindSimilar при получение сообщения от карточки лида. В методе реализован Terrasoft.chain, чтобы убрать ассинхронность запроса в initSimilarEntityRecordsCollection. Но в chain почему-отрабатывает только первая функция, а onSimilarButtonClick не работает. Почему?
define("LeadAccountProfileSchema", ["LeadAccountProfileSchemaResources", "LeadSimilarEntitiesProfileSchemaUtilities"], function(resources) { return { entitySchemaName: "Account", mixins: {}, attributes: {}, messages: { "FindSimilarAccount": { mode: this.Terrasoft.MessageMode.PTP, direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE } }, methods: { initEntity: function() { this.callParent(arguments); this.sandbox.subscribe("FindSimilarAccount", this.FindSimilar, this, ["123"]); }, FindSimilar: function() { this.Terrasoft.chain( this.initSimilarEntityRecordsCollection, this.onSimilarButtonClick, this) } }, }; });
Нравится
Метод, находящийся в chain должен принимать и вызывать после выполнения логики callback:
initSimilarEntityRecordsCollection: function(callback, scope) { // Logic if (callback) { callback.call(scope || this); } },
СД,
попробуйте примерно вот так через next:
Terrasoft.chain( function (next) { // какие-то действия next(); }, function(next) { // либо в callback var config = { isSilent: true, callback: next }; this.save(config, false); } }
СД,
Это просто пример. Вы же спросили почему у вас не выполняет вторая функция. Не выполняется, т.к. не вызывается. Вызвать можно через callback или next.
Конечно блок вызова callback-метода должен находиться в месте получения ответа от первой функции для реализации последовательного вызова.