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' ] }
  • 相关阅读:
    【数据结构】树的DFS序&欧拉序
    Codeforces 1335E2
    Codeforces 1335E1
    Codeforces 1338A/1339C
    【数据结构】ST算法
    Codeforces 1334C
    Codeforces 1333D
    Codeforces 1333C
    python中的socket编程实例与查看端口占用
    java中打印数组
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6544402.html
Copyright © 2011-2022 走看看