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.

  • 相关阅读:
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    白话之jsonp跨域原理分析
    crontab定时任务
    python模块之uuid
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6212763.html
Copyright © 2011-2022 走看看