使用相应的flatMap结果压缩值

时间:2015-05-31 09:10:20

标签: rxjs

假设我有一个文件流filesStream和一个函数uploadFile,它返回一个值的流(Rx.Observable.fromPromise(...))。流上的文件可以通过简单的flatMap

上传
filesStream.flatMap(uploadFile)

我需要的是从filesStream压缩来自uploadFile的相应回复的文件:

zippedStream.subscribe(
    (file, response) => console.log("File " + file.name + " uploaded: " + response.message)
)

我想出了一个非常混乱的方法,它可以工作

var zipppedStream = filesStream.flatMap(
    (file) => uploadFile(file).zip(Rx.Observable.just(file), (r, f) => [r, f])
)

但我真的不喜欢它,因为我需要在subscribe中解包二值数组,它通常看起来很重。 你是怎么做的,或者我错过了什么?

1 个答案:

答案 0 :(得分:3)

您可以绕过apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "21.1.2" compileOptions.encoding = 'ISO-8859-1' defaultConfig { applicationId "de.gestureanywhere" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile ( 'proguard-android.txt' ), 'proguard-rules.pro' } } } dependencies { compile fileTree ( include: '*.jar', dir: 'libs' ) compile 'com.android.support:appcompat-v7:22.0.0' compile files ( 'libs/android-pdfview-1.0.3.jar' ) } 并使用zip重载来完成您想要的操作

flatMap