每个请求使用以下代码;
def main_pods
pod 'Fabric'
pod 'Crashlytics'
pod 'Firebase/Core'
end
target 'TargetName' do
project 'Project.xcodeproj'
main_pods
# Move tests inside target block
target 'TargetNameTests' do
inherit! :search_paths # add custom flag
end
target 'TargetNameSwiftTests' do
inherit! :search_paths # add custom flag
end
target 'TargetNameUITests' do
inherit! :search_paths # add custom flag
pod 'Utils', '~> 0.3.3'
pod 'Pod', '~> 1.4.1'
end
end
target 'OneMoreTargetName' do
project 'Project.xcodeproj'
main_pods
end
我想使用rxjs跳过B'响应。
答案 0 :(得分:0)
不能肯定,如果我理解您的问题,但是我认为您可以使用switchMap来取消以前的发射。
确保不退还订阅!就像您在示例中所做的一样!
您可以做的是:
this.httpClient.get<any>(URL).pipe(
swtichMap(data => data)
).subscribe(data => data) <= here you will get B
答案 1 :(得分:0)
假设您向同一个端点https://api.example.com/endpoint
发出了两个请求:RequestA
和RequestB
。
我们也将响应称为ResponseA
和ResponseB
。
我可以想到两种解决方案。
案例1:通过查看它们的内容可以区分出ResponseA和ResponseB。
情况2:流不是结构化的,仅通过查看内容就无法推断出哪个响应。
该流看起来像{'name': 'B', ...} -> {'name': 'A', ...} -> {'name' : 'B', ...}
。
那么最合适的是filter运算符:
// example of a stream
const source = this.httpClient.get<any>('http://api.example.com',
{params: params, responseType: 'json'})
interval(2000) // could be replace by `fromEvent('someEvent')` for example
.pipe(
take(10), // take only 10 first responses
mergeMap(source),
filter(element => element['name'] != 'B')
)
.subscribe(element=> console.log('Received name :', element['name'])
输出:
“接收的名称:{'name':'A'}”
速度歧视:
// example of a stream
const source1 = this.httpClient.get<any>('http://api.example.com',
{params: params, responseType: 'json'})
const source2 = this.httpClient.get<any>('http://api.example.com',
{params: params, responseType: 'json'})
source1
.pipe(
merge(source2),
take(1)
)
.subscribe(resp=> console.log('fastest response :', resp)