访问链中后面的变量
Access variables later in the chain
在下面的示例中,我获取了一个用户并为该用户创建了一个目录。我只想记录创建的用户。在链的后面访问 user
变量的最佳方法是什么?
let ensureUser$ = ghUser$
.map(u => Rx.Observable.fromPromise(createDir(u)))
.flatMapLatest(x => x)
.do(() => debug('created user dir'))
我想做这样的事情:
let ensureUser$ = ghUser$
.map(u => Rx.Observable.fromPromise(createDir(u)))
.flatMapLatest(x => x)
.do(() => debug(`created user dir ${u}`))
你可以用 zip 做这样的事情,因为 zip 只会 returns 一个新对象,当它有所有新数据时。
const user$ = Rx.Observable.just('ed')
const returnedArrary$ = user$.map(u=>[u]);
const source = Rx.Observable.zip(
user$,
returnedArrary$
)
.do(u=>console.log(`created user dir ${u[0]}`))
.subscribe((x)=>console.log(x));
如果用户不会随每个请求而改变,您可以根据需要使用 LatestFrom 或 combineLatest。
您可以创建一个闭包来存储用户,然后使用 flatMapLatest 发出用户和目录结果:
let ensureUser$ = ghUser$
.flatMapLatest(user => {
return Rx.Observable.fromPromise(createDir(u))
// Emit the directory and user information
.map(directory => ({ directory, user }));
})
.do((x) => debug('created', x))
在下面的示例中,我获取了一个用户并为该用户创建了一个目录。我只想记录创建的用户。在链的后面访问 user
变量的最佳方法是什么?
let ensureUser$ = ghUser$
.map(u => Rx.Observable.fromPromise(createDir(u)))
.flatMapLatest(x => x)
.do(() => debug('created user dir'))
我想做这样的事情:
let ensureUser$ = ghUser$
.map(u => Rx.Observable.fromPromise(createDir(u)))
.flatMapLatest(x => x)
.do(() => debug(`created user dir ${u}`))
你可以用 zip 做这样的事情,因为 zip 只会 returns 一个新对象,当它有所有新数据时。
const user$ = Rx.Observable.just('ed')
const returnedArrary$ = user$.map(u=>[u]);
const source = Rx.Observable.zip(
user$,
returnedArrary$
)
.do(u=>console.log(`created user dir ${u[0]}`))
.subscribe((x)=>console.log(x));
如果用户不会随每个请求而改变,您可以根据需要使用 LatestFrom 或 combineLatest。
您可以创建一个闭包来存储用户,然后使用 flatMapLatest 发出用户和目录结果:
let ensureUser$ = ghUser$
.flatMapLatest(user => {
return Rx.Observable.fromPromise(createDir(u))
// Emit the directory and user information
.map(directory => ({ directory, user }));
})
.do((x) => debug('created', x))