zoukankan      html  css  js  c++  java
  • [Ramda] Convert a Promise.all Result to an Object with Ramda's zip and zipObj

    In this lesson, we'll use Promise.all to get an array that contains the resolved values from multiple promises. Then we'll see how we can use Ramda to convert that array of values into a single object using zip with fromPairs. Then we'll refactor to use zipObj.

    const R = require('ramda');
    
    const {fromPairs, zip, zipObj} = R;
    
    const getName = () => Promise.resolve('wan');
    const getHobbies = () => new Promise((res, rej) => {
        "use strict";
        setTimeout(() => res(['basketball', 'skiing']));
    });
    
    Promise.all([getName(), getHobbies()])
    //    .then(console.log); // [ 'wan', [ 'basketball', 'skiing' ] ]
    
    // Make it as object style
    Promise.all([getName(), getHobbies()])
        .then(([name, hobbies]) => ({name, hobbies}))
    //    .then(console.log); // { name: 'wan', hobbies: [ 'basketball', 'skiing' ] }
    
    // Using zip & fromPairs
    Promise.all([getName(), getHobbies()])
        .then(zip(['name', 'hobbies'])) // [ [ 'name', 'wan' ], [ 'hobbies', [ 'basketball', 'skiing' ] ] ]
        .then(fromPairs) // { name: 'wan', hobbies: [ 'basketball', 'skiing' ] }
    //    .then(console.log);
    
    
    // zipOjb == zip + fromPairs
    Promise.all([getName(), getHobbies()])
        .then(zipObj(['name', 'hobbies']))
        .then(console.log) // { name: 'wan', hobbies: [ 'basketball', 'skiing' ] }
  • 相关阅读:
    GoF23:工厂模式(Factory)
    CSS
    HTML
    JSP基础学习
    JSTL标签
    Jsoup
    Centos7下tomcat关闭异常问题
    剑指Offer_#18_删除链表的节点
    剑指Offer_#17_打印从1到最大的n位数
    剑指Offer_#16_数值的整数次方
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6544402.html
Copyright © 2011-2022 走看看