You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Promise化排序函数并链式调用实现员工列表按名称排序

实现Promise化的员工名称排序函数并链式调用

需求概述

需要创建一个Promise化的函数,对员工列表按名称排序,并将其链式调用到已有的Promise流程中。

现有代码

function arr() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve(employeeDetailsArray);
        }, 2000);
    });
}

arr()
.then(function(result) {
    console.log(result); 
    return arr();
})
.then() ////code to sort by name, output should be sorted list of employee details by name

const employeeDetailsArray = [
  { name: 'boss', email: 'boss@gmail.com', age: 22 },
  { name: 'avid', email: 'avid@gmail.com', age: 60 },
  { name: 'rajam', email: 'rajam@gmail.com', age: 75 },
  { name: 'dam', email: 'dam@gmail.com', age: 45 }
]

预期输出

  • 2秒后输出原数组:
[
  { name: 'boss', email: 'boss@gmail.com', age: 22 },
  { name: 'avid', email: 'avid@gmail.com', age: 60 },
  { name: 'rajam', email: 'rajam@gmail.com', age: 75 },
  { name: 'dam', email: 'dam@gmail.com', age: 45 }
]
  • 随后输出按名称排序后的数组:
[
  { name: 'avid', email: 'avid@gmail.com', age: 60 },
  { name: 'boss', email: 'boss@gmail.com', age: 22 },
  { name: 'dam', email: 'dam@gmail.com', age: 45 }, 
  { name: 'rajam', email: 'rajam@gmail.com', age: 75 }
]

解决方案

创建Promise化的排序函数,再将其接入链式调用流程:

function arr() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve(employeeDetailsArray);
        }, 2000);
    });
}

// 定义Promise化的排序函数
function sortEmployeesByName(employees) {
    return new Promise((resolve) => {
        // 拷贝原数组后排序,避免修改原数据
        const sortedList = [...employees].sort((a, b) => {
            return a.name.localeCompare(b.name);
        });
        resolve(sortedList);
    });
}

arr()
.then(function(result) {
    console.log(result); 
    return arr();
})
.then(function(employees) {
    // 调用排序函数并返回其Promise
    return sortEmployeesByName(employees);
})
.then(function(sortedEmployees) {
    console.log(sortedEmployees);
});

const employeeDetailsArray = [
  { name: 'boss', email: 'boss@gmail.com', age: 22 },
  { name: 'avid', email: 'avid@gmail.com', age: 60 },
  { name: 'rajam', email: 'rajam@gmail.com', age: 75 },
  { name: 'dam', email: 'dam@gmail.com', age: 45 }
]

关键说明

  1. sortEmployeesByName函数接收员工数组,内部通过localeCompare实现名称的自然排序,同时用扩展运算符[...employees]拷贝原数组,避免修改原始数据。
  2. 在第二个then中,接收上一步返回的员工数组,调用排序函数并返回其Promise,后续then就能拿到排序后的结果并输出。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:01:12