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' ] }
  • 相关阅读:
    HDOJ 1028 母函数分析
    尼姆博弈的典型例题
    HDOJ1232 畅通工程 DFS
    第一个八皇后
    HDOJ 1242
    我的“插入算法”实现
    第五讲 this 类变量 类方法
    我的“二分查找算法”实现
    我对锤子ROM 功能的看法——视觉篇
    第六讲 Java 四大特性:抽象 封装 继承 多态
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6544402.html
Copyright © 2011-2022 走看看