zoukankan      html  css  js  c++  java
  • Rxjs6.x异步数据流编程-Angular Rxjs快速入门教程

    app.module.ts

    import{RequestService} from "./services/request.service";
    providers: [RequestService],

    request.service.ts

    import { Injectable } from '@angular/core';
    import{Observable} from "rxjs";
    import { from } from 'rxjs';
    @Injectable({
      providedIn: 'root'
    })
    export class RequestService {
    
      constructor() { }
      //同步
      getData() {
        return "this is service data";
      }
      getCallbackData(cb){
        setTimeout(()=>{
          var username="张三";
          cb(username);
        },1000);
      }
    
      getPromiseData(){
        return new Promise((resolve,reject)=>{
          setTimeout(()=>{
            var username="李四";
            resolve(username);
          },1000);
        });
      }
    
      getRxjsData(){
        return new Observable((observer)=>{
          setTimeout(()=>{
            var username="张三----Rxjs";
            observer.next(username);
          },2000);
        });
      }
      //多次执行: 
      getPromiseIntervalData(){
        return new Promise((resolve,reject)=>{
          setInterval(()=>{
            var username="李四";
            resolve(username);
          },1000);
        });
      }
    
      getRxjsIntervalData(){
        let count=0;
        return new Observable((observer)=>{
          count++;
          setInterval(()=>{
            var username="张三----Rxjs--"+count;
            observer.next(username);
          },2000);
        });
      }
    
      getRxjsIntervalNum(){
        let count=0;
        return new Observable((observer)=>{
          setInterval(()=>{
            count++;
            observer.next(count);
          },1000);
        });
      }
    }

    request-home.component.ts

    import { Component, OnInit } from '@angular/core';
    import { RequestService } from "../../services/request.service";
    import { map, filter } from "rxjs/operators";
    @Component({
      selector: 'app-request-home',
      templateUrl: './request-home.component.html',
      styleUrls: ['./request-home.component.scss']
    })
    export class RequestHomeComponent implements OnInit {
    
      constructor(public request: RequestService) { }
    
      ngOnInit() {
        //同步方法:
        // let data = this.request.getData();
        // console.log(data);
    
        // //回调函数解决异步的问题:
        // this.request.getCallbackData((data) => {
        //   console.log(data);
        // });
    
        // //通过Promise获取异步数据:
        // var promiseData=this.request.getPromiseData();
        // promiseData.then((data)=>{
        //   console.log(data);
        // });
    
        //4.rxjs获取异步方法里面的数据:
        // var rxjsData=this.request.getRxjsData();
        // rxjsData.subscribe((data)=>{
        //   console.log(data);
        // });
    
        //5.过一秒以后撤回刚才的操作:
        // var streem=this.request.getRxjsData();
        // var d=streem.subscribe((data)=>{
        //   console.log(data);
        // });
        // setTimeout(()=>{
        //   d.unsubscribe(); //取消订阅:
        // },1000);
    
        //6.promise执行多次(没有这个能力)
        // var intervalData = this.request.getPromiseIntervalData();
        // intervalData.then((data) => {
        //   console.log(data);
        // });
    
        //7.rxjs执行多次
        // var streemInterval = this.request.getRxjsIntervalData();
        // streemInterval.subscribe((data) => {
        //   console.log(data);
        // });
    
        //8.用工具方法对返回的数据进行处理:
        // var streemNum = this.request.getRxjsIntervalNum();
        // streemNum.pipe(
        //   filter((value)=>{
        //   if(value%2==0){
        //     return true;
        //   }
        // })
        // ).subscribe((data) => {
        //   console.log(data);
        // });
    
        //map
        // var streemNum = this.request.getRxjsIntervalNum();
        // streemNum.pipe(
        //   map((value) => {
        //     return value * value;
        //   })
        // ).subscribe((data) => {
        //   console.log(data);
        // });
    
    
        //map和filter一起使用:
        var streemNum = this.request.getRxjsIntervalNum();
        streemNum.pipe(
          filter((value) => {
            if (value % 2 == 0) {
              return true;
            }
          }),map((value) => {
              return value * value;
            })
        ).subscribe((data) => {
          console.log(data);
        });
      }
    
    }

  • 相关阅读:
    C++实现希尔排序和快排
    操作系统重点知识汇总
    结构体(对齐规则及举例)
    指针和引用(传指针和传引用)
    数组和指针
    判断一个字符是否为数字的两种方法(C/C++)
    浅谈操作系统栈和堆(区别与联系)
    浅谈malloc/free和new/delete 的区别
    操作符和表达式
    windows重装系统后grub引导菜单修复方法(亲自实验过)
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/12169261.html
Copyright © 2011-2022 走看看