运行 两个承诺相同的参数
Run two promises that the same parameter
我正在玩弄 Rx.js 我正在寻找 运行 两个承诺,一个创建目录,一个发出 http 请求,两者都采用一个参数 user
.我如何将这两件事联系在一起?
const GITHUB_USER = 'reggi'
let repos = Rx.Observable.just(GITHUB_USER)
.map(user => {
return createDir(user)
})
.map(user => {
return getRepos(user)
})
你可以做的是稍微作弊:
let repos = Rx.Observable.just(GITHUB_USER)
.map(user => {
return createDir(user).then(res_cd => {
return getRepos(user);
});
})
.then(res => {...})
这并不理想,但它会起作用。
flatMap
运算符允许您 'flatten' Promises 的 Observable(即将解析某些内容的 Promises 流转换为已解析数据流):
const GITHUB_USER = 'reggi'
// repos$ is a stream that will resolve the user's repositories
// once the directory is created.
let repos$ = Rx.Observable.just(GITHUB_USER)
.flatMap(user => {
// Return a Promise that resolves the user
return createDir(user).then(() => user);
})
.flatMap(user => {
// Return a Promise that resolves the repos
return getRepos(user)
});
我正在玩弄 Rx.js 我正在寻找 运行 两个承诺,一个创建目录,一个发出 http 请求,两者都采用一个参数 user
.我如何将这两件事联系在一起?
const GITHUB_USER = 'reggi'
let repos = Rx.Observable.just(GITHUB_USER)
.map(user => {
return createDir(user)
})
.map(user => {
return getRepos(user)
})
你可以做的是稍微作弊:
let repos = Rx.Observable.just(GITHUB_USER)
.map(user => {
return createDir(user).then(res_cd => {
return getRepos(user);
});
})
.then(res => {...})
这并不理想,但它会起作用。
flatMap
运算符允许您 'flatten' Promises 的 Observable(即将解析某些内容的 Promises 流转换为已解析数据流):
const GITHUB_USER = 'reggi'
// repos$ is a stream that will resolve the user's repositories
// once the directory is created.
let repos$ = Rx.Observable.just(GITHUB_USER)
.flatMap(user => {
// Return a Promise that resolves the user
return createDir(user).then(() => user);
})
.flatMap(user => {
// Return a Promise that resolves the repos
return getRepos(user)
});