Синтаксис node / javascript () () - как он работает? - PullRequest
1 голос
/ 17 января 2020

Помогите мне понять этот код, как вывод of (1,2,3) передается в map( x => x*x), хотя map( x => x*x) последовательно 1-й в строке кода и of (1,2,3) 2-й

map(x => x*x) (of (1,2,3)).subscribe((value)=> console.log(`value : ${value}`))

то же самое может быть написано ниже, что я хорошо понимаю, но не выше единицы в редакторе, включить ниже импорта

import {of} from 'rxjs'
import {map} from 'rxjs/operators'

Ответы [ 2 ]

1 голос
/ 17 января 2020

Это на самом деле пример из документации Rx JS, и поясняется выше:

Трубный оператор - это, по сути, чистая функция, которая принимает одну Observable в качестве входных данных и генерирует другую Observable в качестве выходных данных. Подписка на выходные данные Observable также подпишется на входные данные Observable.

Таким образом, это означает, что map(x => x*x) возвращает вид функции, которая принимает одну Observable в качестве аргумента и возвращает другую Observable. Затем мы вызываем эту функцию с помощью (of(1,2,3)) и получаем наш конечный результат, который фактически равен of(1,2,3).pipe(map(x => x*x))

0 голосов
/ 11 февраля 2020

Больше возможностей JavaScript. Если вы видите, что функция вызывается как foo()() или foo() ('hello'), это означает, что foo возвращает другую функцию, а параметр во втором "()", такой как 'hello' в foo() ('hello'), передается функции, возвращаемой функцией foo ().

Пример
сохранить приведенный ниже код в качестве образца. js и выполнить его, используя node sample

foo()()                  // return undefined, as empty parameter ( parenthesis ) are passed though expecting one
foo()('hello')           // param 'hello' is passed to bar when it is returned inside foo
foo()('hello','world')   //both hello and world are passed, but only hello is printed, as bar expect only 1 param


function foo() {
    return bar
}


function bar (param) {
    console.log('bar : '+param)
}

Результаты

bar : undefined 
bar : hello 
bar : hello 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...