Показать сообщение отдельно
  #1 (permalink)  
Старый 31.10.2017, 15:30
Аспирант
Отправить личное сообщение для shoopik Посмотреть профиль Найти все сообщения от shoopik
 
Регистрация: 02.07.2017
Сообщений: 83

angular 2 странная функция
Здравствуйте, натолкнулся на код, и не могу разобрать его.

interface ImessagesOperation extends Function {
    (messages: Message []):Message[];
}

 newMessages: Subject<Message> = new Subject<Message>();
    updates:Subject<any> = new Subject<any>();
    create:Subject<any> = new Subject<any>();   
    messages:Observable<Message[]>;
    martThreadAsRead:Subject<any> = new Subject<any>();

    constructor() {
        this.messages = this.updates
            .scan((messages:Message[],
                operation:ImessagesOperation) => {
                    return operation(messages);
                },
            initialMessages)
            .publishReplay(1)
            .refCount;

        this.create
            .map( function(message: Message) : ImessagesOperation {
                return (messages: Message[]) => {
                    return messages.concat(message);
                }
            })
            .subscribe(this.updates);

        this.newMessages
            .subscribe(this.create);
    }


Что это за магическая функция, что она делает и возвращает ?

interface ImessagesOperation extends Function {
    (messages: Message []):Message[];
}


.scan((messages:Message[],
                operation:ImessagesOperation) => {
                    return operation(messages);
                },

И здесь есть operation, первый принимается как параметр, второй
operation(messages);

как функция ?
Ответить с цитированием