2017-01-14 25 views
5

Jestem nowy w Node.js.Gdzie jest ".on" w "process.stdin.on" dla?

Byłem na ich stronie internetowej i miałem przykładowy kod od znajomego zawierającego "stdin". Poszedłem szukać tego, co stdin było i wiem teraz. Mimo to na stronie internetowej Node.js używają "stdin.on".

Nie mogę znaleźć nic na ten temat. Może ktoś może mnie wypełnić ?! :)

process.stdin.setEncoding('utf8'); 

process.stdin.on('readable',() => { 
    var chunk = process.stdin.read(); 
    if (chunk !== null) { 
    process.stdout.write(`data: ${chunk}`); 
    } 
}); 

process.stdin.on('end',() => { 
    process.stdout.write('end'); 
}); 

Miałem nadzieję, że ktoś może mi to wyjaśnić na poziomie nie eksperta. Wiem, że mogłem kupić książkę i zacząć czytać, ale robię to dla zabawy w wolnym czasie ...

+0

https://en.wikipedia.org/wiki/ Standard_streams –

+0

@JohnSlegers, Przeczytam tę stronę przez sekundę, ale to tak naprawdę nie odpowiada na moje pytanie. "Zeskanowałem" stronę i nie mogę znaleźć nic na temat dodatku ".on". Czy jest coś, czego mi brakuje, czy też miałem przekazać mi jakieś podstawowe informacje :). Edycja: Dziękujemy za odpowiedź tak szybko, jak Ty –

+1

Możliwy duplikat [jak pracować z "process.stdin.on"?] (Http://stackoverflow.com/questions/26460324/how-to-work-with- process-stdin-on) –

Odpowiedz

3

Sam ostatnio zmagałem się z tym samym pytaniem i po krótkim kopaniu znalazłem, że według Node.Js documentation:

przedmiotem process jest instancją EventEmitter

Jeśli udać się na EventEmitter documentation można znaleźć więcej informacji o interfejsie API i on functionalit y tam:

Dodaje funkcję listener do końca tablicy detektorów dla zdarzenia o nazwie eventName. Nie są sprawdzane, czy słuchacz został już dodany. Wiele połączeń przechodzących przez tę samą kombinację parametru eventName i detektor spowoduje, że detektor będzie dodawany i wielokrotnie wywoływany.

W moim przypadku było pominie pliku definicji maszynopis dla węzła, który doprowadził mnie w dół tej drogi, z następujących metod API:

export class EventEmitter { 
    addListener(event: string | symbol, listener: Function): this; 
    // Here is it 
    on(event: string | symbol, listener: Function): this; 
    once(event: string | symbol, listener: Function): this; 
    removeListener(event: string | symbol, listener: Function): this; 
    removeAllListeners(event?: string | symbol): this; 
    setMaxListeners(n: number): this; 
    getMaxListeners(): number; 
    listeners(event: string | symbol): Function[]; 
    emit(event: string | symbol, ...args: any[]): boolean; 
    listenerCount(type: string | symbol): number; 
    // Added in Node 6... 
    prependListener(event: string | symbol, listener: Function): this; 
    prependOnceListener(event: string | symbol, listener: Function): this; 
    eventNames(): (string | symbol)[]; 
} 
+0

Dzięki za odpowiedź! Miałem kilka rzeczy, które powstrzymały mnie przed zrozumieniem tego, co chciałem wiedzieć. Ponieważ nie jestem Anglikiem, nie znałem nawet dokładnego tłumaczenia emitenta (co sprawiło, że trudno go było zrozumieć). I nigdy nie używałam słowa "słuchacz", kiedy programowałem. Potem ponownie przeczytałem twoją pocztę, a pierwsza część ma sens. Druga część ... Nie mam pojęcia, co się dzieje ... Dzięki i tak :) –

+1

Nie ma problemu, cieszę się, że mogłem uratować kogoś, kto musiał przejść przez ból, który zrobiłem, aby znaleźć dokładnie to, gdzie jest "on"! –

+0

Yup, po przeczytaniu części z "na" i "raz" zdałem sobie sprawę, gdzie to było i po niektórych eksperymentach ... Mam to działa! :) Edycja: Po prostu nie lubię używać kodu Nie rozumiem ...: / –