深入理解C++ this指针:从内存模型到现代编程实践
2026/8/12 20:56:02
Response<T>execute()Response<T>。会阻塞,不能在主线程用voidenqueue(Callback<T>callback)voidcancel()booleanisCanceled()booleanisExecuted()Call<T>clone()publicstatic<@NonNullT>Observable<T>just(@NonNullTitem1,@NonNullTitem2,@NonNullTitem3)Observable<String>observable=Observable.just("Hello","World","!");observable.subscribe(s->System.out.println("just: "+s));just: Hello just: World just: !publicstatic<@NonNullT>Observable<T>fromCallable(@NonNullCallable<?extendsT>callable)Observable<String>observable=Observable.fromCallable(()->{Thread.sleep(1000);return"从数据库查询的结果";});observable.subscribe(s->System.out.println("fromCallable: "+s));fromCallable: 从数据库查询的结果publicstatic<@NonNullT>Observable<T>fromIterable(@NonNullIterable<?extendsT>source)List<String>list=Arrays.asList("A","B","C");Observable<String>observable=Observable.fromIterable(list);observable.subscribe(s->System.out.println("fromIterable: "+s));fromIterable: A fromIterable: B fromIterable: Cpublicstatic<@NonNullT>Observable<T>create(@NonNullObservableOnSubscribe<T>source)Observable<Object>observable=Observable.create(emitter->{emitter.onNext("第 1 个数据");emitter.onNext("第 2 个数据");emitter.onComplete();});observable.subscribe(data->System.out.println("create 收到:"+data),error->System.out.println("错误:"+error),()->System.out.println("完成!"));create 收到:第 1 个数据 create 收到:第 2 个数据 完成!publicstatic<@NonNullT>Observable<T>defer(@NonNullSupplier<?extends@NonNullObservableSource<?extendsT>>supplier)Observable<Long>observable=Observable.defer(()->Observable.just(System.currentTimeMillis()));observable.subscribe(time->System.out.println("第 1 次:"+time));try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}observable.subscribe(time->System.out.println("第 2 次:"+time));第 1 次:1786448460769 第 2 次:1786448461773publicstaticObservable<Long>interval(longperiod,@NonNullTimeUnitunit)Observable<Long>observable=Observable.interval(1,TimeUnit.SECONDS);observable.take(3)// 只取前 3 个,避免无限输出.subscribe(num->System.out.println("心跳第 "+num+" 次"));心跳第 0 次 心跳第 1 次 心跳第 2 次publicfinal<@NonNullR>Observable<R>map(@NonNullFunction<?superT,?extendsR>mapper)Observable<String>observable=Observable.just("123");observable.map(s->Integer.parseInt(s)).map(i->i*2).subscribe(result->System.out.println("map 结果:"+result));map 结果:246publicfinal<@NonNullR>Observable<R>flatMap(@NonNullFunction<?superT,?extendsObservableSource<?extendsR>>mapper)Observable<String>observable=Observable.just("A","B");observable.flatMap(letter->Observable.just(letter+"1",letter+"2")).subscribe(s->System.out.println("flatMap: "+s));flatMap: A1 flatMap: A2 flatMap: B1 flatMap: B2Observable.just(1,2,3,4,5,6,7,8,9,10).flatMap(userId->apiService.getUserAvatar(userId).subscribeOn(Schedulers.io())).subscribe(avatarUrl->{displayAvatar(avatarUrl);});publicfinal<@NonNullR>Observable<R>concatMap(@NonNullFunction<?superT,?extendsObservableSource<?extendsR>>mapper)Observable<String>observable=Observable.just("A","B","C");observable.concatMap(letter->Observable.just(letter+"1",letter+"2")).subscribe(s->System.out.println("concatMap: "+s));concatMap: A1 concatMap: A2 concatMap: B1 concatMap: B2 concatMap: C1 concatMap: C2publicfinalObservable<@NonNullList<T>>buffer(intcount)Observable<Integer>observable=Observable.range(1,10);observable.buffer(3)// 每 3 个打包成 List.subscribe(list->System.out.println("buffer: "+list));buffer: [1, 2, 3] buffer: [4, 5, 6] buffer: [7, 8, 9] buffer: [10]