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.

  • 相关阅读:
    使用POI操作Excel时对事先写入模板的公式强制执行
    centos7下python3和pycharm安装
    IntelliJ IDEA 快捷键终极大全
    netcore XmlDocument 使用Load和Save方法
    Add File as a Link on Visual Studio
    C#开源项目
    Shell bash和sh区别
    SecureCRT中Vim颜色
    查找局域网中未知设备的IP
    代码分支管理
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6212763.html
Copyright © 2011-2022 走看看