返回介绍

solution / 2800-2899 / 2821.Delay the Resolution of Each Promise / README

发布于 2024-06-17 01:02:59 字数 1963 浏览 0 评论 0 收藏 0

2821. 延迟每个 Promise 对象的解析

English Version

题目描述

给定一个函数数组 functions 和一个数字 ms,返回一个新的函数数组。

  • functions 是一个返回 Promise 对象的函数数组。
  • ms 表示延迟的时间,以毫秒为单位。它决定了在新数组中的每个函数返回的 Promise 在解析之前等待的时间。

新数组中的每个函数应该返回一个 Promise 对象,在延迟了 ms 毫秒后解析,保持原始 functions 数组中的顺序。delayAll 函数应确保从 functions 中的每个 Promise 都被延迟执行,形成返回延迟的 Promise 的函数的新数组。

 

示例 1:

输入:
functions = [
   () => new Promise((resolve) => setTimeout(resolve, 30))
], 
ms = 50
输出:[80]
解释:数组中的 Promise 在 30 毫秒后解析,但被延迟了 50 毫秒,所以总共延迟了 30 毫秒 + 50 毫秒 = 80 毫秒。

示例 2:

输入:
functions = [
    () => new Promise((resolve) => setTimeout(resolve, 50)),
    () => new Promise((resolve) => setTimeout(resolve, 80))
], 
ms = 70
输出:[120,150]
解释:数组中的 Promise 在 50 毫秒和 80 毫秒后解析,但它们被延迟了 70 毫秒,所以总共延迟了 50 毫秒 + 70 毫秒 = 120 毫秒 和 80 毫秒 + 70 毫秒 = 150 毫秒。

 

提示:

  • functions 是一个返回 Promise 对象的函数数组
  • 10 <= ms <= 500
  • 1 <= functions.length <= 10

解法

方法一

function delayAll(functions: Function[], ms: number): Function[] {
  return functions.map(fn => {
    return async function () {
      await new Promise(resolve => setTimeout(resolve, ms));
      return fn();
    };
  });
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文