ramdajs 를 사용 하여 함수 식 프로 그래 밍 을 하 는 데 발생 하 는 실제 문제

2292 단어
몇 가지 기초 개념의 역할
순수 함수 (pure function), 코 리 화 (curry), 조합 (copose).
순 함수 의 작용
  • 입 출력 확인.
  • 캐 시 가능.입력 이 출력 을 확인 하기 때문에 캐 시 가 가능 합 니 다.다음 같은 입력 은 맵 을 통 해 출력 됩 니 다.
  • 테스트 하기 쉽다.

  • 코 리 화 작용
  • 집행 지연.
  • 제한 함수 생 성.

  • 조합의 역할
  • 재 활용 함수 가 대상 을 대상 으로 하 는 계승 보다 쉽다.
  • 조합 을 바 꾸 기 쉬 워 대상 을 대상 으로 하 는 재 작성 보다 쉽다.

  • 레 퍼 런 스
    상술 한 내용 을 이해 하려 면 JS 함수 식 프로 그래 밍 지침 을 참고 할 수 있다.다음은 실제 업무 에서 해결 해 야 할 문제 다.
    ramdajs 프로 그래 밍 을 실제로 활용 하 는 문제
    1. 비동기
    당신 은 PromiseramdajscomposeP 를 사용 하여 비동기 처 리 를 할 수 있 습 니 다.
    2. 오류 던 지기
    이 장면 을 보 세 요: 함수 a = > 함수 b = > 함수 c = > 함수 d 가설 함수 a 가 이상 데 이 터 를 출력 했 습 니 다. 함수 b, c, d 의 처 리 를 무시 하고 이 이상 데 이 터 를 되 돌려 주 고 싶 습 니 다.예제 코드 는 다음 과 같다.
    var R = require('ramda');
    var log = console.log.bind(this);
    
    var setTimeout1 = R.curry(function( b ){
      return new Promise(function(resolve, reject){
        setTimeout(function(){
          callback('  setTimeout1 ,     ', b);
          try{
            aaa
          }
          catch(err){
            reject('  ');
          }
          
          resolve('  setTimeout2');
        },1000);
      })
    });
    
    var setTimeout2 = R.curry(function( arg ){
      return new Promise(function(resolve, reject){
        setTimeout(function(){
          resolve('  ');
        },2000);
      });
    });
    
    var app1 = R.composeP(setTimeout2(log) ,setTimeout1(log));
    var app2 = R.composeP( function(x){return 'app 2';} ,app1);
    
    var result = app2("test")
    .then(function(x){return 'test...end';})
    .catch(function(error){log('error:', error)});
    
    /*
           :
      setTimeout1 ,      test
    error:   
    */
    

    3. 병행
    예제 코드 는 다음 과 같다.
    const R = require('ramda');
    
    const setTimeout1 = function (value) {
      return new Promise(function (resolve, reject) {
        resolve(value);
      });
    };
    
    const setTimeout2 = function (value) {
      return new Promise(function (resolve, reject) {
        setTimeout(function () {
          resolve(value);
        }, 2000);
      });
    };
    
    const all = function () {
      return Promise.all([setTimeout1(10), setTimeout2(100)]);
    };
    
    const app = R.composeP(
      function (values) { console.log('arg1', values); },
      all
    );
    app();
    

    좋은 웹페이지 즐겨찾기