`expand'在rxjs中意味着什么

时间:2016-09-23 08:12:49

标签: javascript ecmascript-6 rxjs

我正在阅读this code。这是我第一次遇到RxJS。

以下是相关代码:

const resolvedAll = updatedPkgJSONs
    ::map((pkgJson) => ({pkgJson, target: '..', isProd}))
    ::resolveAll(nodeModules, undefined, isExplicit)::skip(1)
    ::publishReplay().refCount()

我试图猜测上述陈述的含义。但我坚持resolveAll功能。

以下是resolveAll功能:

export function resolveAll (nodeModules, targets = Object.create(null), isExplicit) {
    return this::expand(({target, pkgJson, isProd = false}) => {
        // more code
    })
}

this::expand的含义是什么? 是否应该匹配参数的情况? ({pkgJson, target: '..', isProd}){target, pkgJson, isProd = false}

我知道有the document。但是我很难将文档与我的例子联系起来。

1 个答案:

答案 0 :(得分:2)

此代码中有许多功能:

  • ::运算符(称为 bind operator )将确保this绑定正确。
  • ({arg1, arg2, arg3})解构运算符
  • isProd = false是参数的默认值

具体来说,这里发生的是this::expand是一个接受函数作为参数的函数(也称为高阶函数),函数{{ 1}}接受,接受一个Object参数,使用名为expandtarget和(可选)pkgJson的属性(默认为false)。