假设我有一个文件流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
中解包二值数组,它通常看起来很重。
你是怎么做的,或者我错过了什么?
答案 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