zoukankan      html  css  js  c++  java
  • [Compose] 18. Maintaining structure whilst asyncing

    We take our Promise.all() analogy further by using traversable on a Map(). Then we use two traversals in the same workflow.

    Traverse is good for maintaning the original data structure:

    const Task          = require('data.task');
    const { List, Map } = require('immutable-ext');
    
    const httpGet = (path, params) => Task.of(`${path} result`);
    
    
    // map
    const res0 = Map(
        {
            home  : '/',
            about : '/about'
        }
    ).map(route =>
            httpGet(route, {})
    );
    console.log(res0); // Map{ home: Task(), about: Task()}

    For example, the code here return Map({Task}) instead of Map({}). 

    So we can actually replace map with traverse.

    // Traverse
    Map(
        {
            home: '/',
            about: '/about'
        }
    ).traverse(
        Task.of,
        route => httpGet(route, {})
    ).fork(console.error, console.log); // Map { "home": "/ result", "about": "/about result" }

    Now we are able to keep the same structure as before.

    We can also use double traverse if needed, for example we change data to array of path inside of string:

    // Double traverse
    Map(
        {
            home: ['/', '/home'],
            about: ['/about', '/help']
        }
    ).traverse(
        Task.of,
        routes =>
            List(routes)
                .traverse(
                    Task.of,
                    route => httpGet(route, {})
                )
    ).fork(
        console.error, console.log
    ); // Map { "home": List [ "/ result", "/home result" ], "about": List [ "/about result", "/help result" ] }

    Because Array doesn't have traverse function, so we need to use List from immutable.

  • 相关阅读:
    OpenGL(十一) BMP真彩文件的显示和复制操作
    OpenGL(十) 截屏并保存BMP文件
    复数的认识与理解
    复数的认识与理解
    采样定理
    采样定理
    How Many Fibs_hdu_1316(大数).java
    FZOJ2110 star(DFS)
    透过表象看本质!?之二数据拟合
    设计中的道理_3
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6212763.html
Copyright © 2011-2022 走看看