setTimeout 函数的第三个参数是什么?

2023-11-30

我正在阅读一些使用 Promise 对象的代码。

有一个setTimeout函数有三个参数,我想知道第三个参数是做什么的?因为通常它只有两个参数。

代码如下:

function timeout(ms) {
    return new Promise((resolve, reject) => {
        setTimeout(resolve, ms , 'done');
    });
}
timeout(1000).then(value => {
    console.log(value);
});

我注意到第三个参数被传递给resolve函数,但是为什么我可以在函数中使用它then?它是如何工作的?


下面两个例子都可以解释一下

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values); // expected output: Array [3, 42, "foo"]
});

上面的例子可以写成: -

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('foo');
  }, 100)
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values); // expected output: Array [3, 42, "foo"]
});

简而言之,第三个参数是用户需要传递给引用函数的参数[第一个参数] 给予 setTimeout,这是承诺。我们可以将此功能称为“参数结转”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setTimeout 函数的第三个参数是什么? 的相关文章

  • 生成两个日期内的随机日期数组的优雅方法

    我有一个日期选择器 其中显示两个月 我想在每个可见月份中随机选择 3 个日期 date datepicker minDate new Date dateFormat DD MM d yy constrainInput true before
  • 通过字符串键/路径生成嵌套对象结构

    我想做一个名为createAssociativeArray它将接收两个参数 string and object 像这样 function createAssociativeArray string object 最后一项string应该得到
  • 使用源映射 Unuglify js 文件

    我是新来的JavaScript并遇到了这种最小化的做法javascript文件 然而 我在网上或 VS 代码中找不到任何可以使用附加源文件最大化我的 js 代码的工具 这是我拥有的文件 a js webpackJsonp 1 681 fun
  • 隐藏类以及 {} 对象与自定义构造函数之间的等效性 (v8)

    鉴于这篇文章 http richardartoul github io jekyll update 2015 04 26 hidden classes html http richardartoul github io jekyll upd
  • 使用 jquery .find() 获取子项

    我有以下标记 div div class item div class item box div class one div div div div class item div class item box div class one d
  • 用户脚本 - 有没有办法将 jquery 代码注入 angularjs dom?

    所以我正在尝试为一个网站创建用户脚本 我无法更改网站的任何源代码 因为它不是我的 网站到处都使用 AngularJS 控制器 我研究了几天如何做到这一点 但没有成功 所以我尝试注入代码 nav after div test div 当我通过
  • 如何通过 npm 安装包而不设置 package.json

    As per this https stackoverflow com questions 29276345 npm save installed packages as dependencies发布可以先安装 npm 包然后再创建包 js
  • 先按行再按列布局 div

    我有一个容器div and 3 div里面如下 div div 1 div div 2 div div 3 div div 不知道每一个的内容div内部 但它们的高度和宽度是可变的 集装箱的高度由最高的决定div inside 我想展示这些
  • Angular - 如何从 DOM 中删除我使用过 $compile 的元素?

    我需要的是两个 ng views 的功能 因为我不能 我想更改某些内容的innerHTML 并编译它 我遇到的问题是 当我再次更改内容时 我可以编译 但是 Angular 是否会自行删除绑定 或者我必须手动执行此操作 如果是这样 怎么办 编
  • 我如何能够以两行显示标题,并且每行的字体大小不同?

    我正在使用 Google Chart API 创建时间线图 并希望将图的标题修改为两行 问题 我如何能够显示具有不同字体大小的两线图表标题 电流输出 理想输出 相关研究 我唯一能找到的是有人试图用饼图来做到这一点 但我尝试了但无法使其发挥作
  • ReferenceError:regeneratorRuntime未定义(但在范围内工作)

    我遇到过这种奇怪的情况 ReferenceError regeneratorRuntime is not defined 我已经设法在一个非常小的设置中重现 与同一问题上的类似问题相比 并且还注意到一些奇怪的行为 具体取决于是否使用范围 以
  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst

随机推荐

  • 当机器人加入服务器时发送消息

    我想每次当机器人被邀请到服务器时发送一条消息 然后它应该写这样的内容 你好 这是我的不和谐机器人 到目前为止 我有这段代码 它不会产生任何错误 但也不会发送消息 bot event async def on server join ctx
  • 是否可以解决“为可变参数参数创建 T 的通用数组”编译器警告?

    这是相关代码的简化版本 一个泛型类使用另一个具有泛型类型参数的类 并且需要将泛型类型之一传递给具有可变参数参数的方法 class Assembler
  • Microsoft BotFramework-WebChat 滚动问题

    我正在使用微软 BotFramework WebChat 但我在让它正确滚动时遇到问题 通常 当机器人响应时 用户被迫手动滚动到聊天日志的底部 我找不到任何有关挂钩的文档 可以让我调用 API 来滚动它 有没有办法让聊天窗口自动滚动 HTM
  • C++ 中 int 的 ostringstream 问题

    我希望输出以下代码hello5 相反 它只输出hello 尝试将 int 输出到 似乎是一个问题ostringstream 当我直接输出相同的内容时cout我收到了预期的输入 在 Snow Leopard 上使用 XCode 3 2 Tha
  • 带复选框的 Javafx 8 Tableview 选择

    我已经设置了一个启用多选的表视图 并尝试将插入列中的复选框的侦听器附加到表的选择模型 checkBoxTableColumn setCellValueFactory cellData gt CheckBox checkBox new Che
  • java.lang.IndexOutOfBoundsException

    我使用 ArrayList 来存储关卡中每个矩形的 阴影 但是当我像这样迭代时 for int n 0 n lt shadows size n g2d fillPolygon shadows get n 0 g2d fillPolygon
  • SpeechToText 并运行 ACTION_CHECK_TTS_DATA 意图

    我已经实施了TextToSpeech完全按照中提到的集成这篇博文 在我将它添加到我的程序中后 它现在干扰了我的其他程序intents 例如 项目清单 用户启动应用程序 用户调用加载活动 用户选择要加载的文件 活动返回 fileanme 以在
  • Kubernetes 不将数据复制到已安装的卷中

    根据这里的文档 https docs docker com storage volumes 如果您启动一个创建新卷的容器 如上所述 并且该容器在要挂载的目录 例如上面的 app 中具有文件或目录 则该目录的内容将被复制到该卷中 然后容器安装
  • 在 PYTHON 中向文件添加时间戳

    我可以使用 os rename 重命名文件 没有任何问题 错误 但是当我尝试重命名一个文件并添加时间戳时 它会抛出 win3 错误或 win123 错误 尝试了所有组合但没有运气 任何人都可以帮忙 成功运行代码 usr bin python
  • 通过 Java 与 Apple 推送通知服务器进行 SSL 握手

    您好 我正在尝试使用 Java 向我的设备发送推送消息 但我在建立 ssl 连接时已经遇到问题了 这是到目前为止的代码 KeyStore keyStore KeyStore getInstance PKCS12 InputStream ke
  • 如何在CSS中获取背景图像上的扫描线

    我有一个整页背景图像 我想在其上覆盖扫描线 我想复制我在二十世纪九十年代的数字艺术中看到的更传统的对角线扫描线效果 例如实现here在 Bootstrap 的模式掩码 5 中 我看过一些关于对角线扫描线的教程 但一直找不到这样的东西 我将如
  • 注册自定义控件失败

    我尝试在 webconfig 文件中注册我的用户控件 因为我收到 元素不存在 错误 但当我尝试在 webconfig 中注册它们时 我收到以下错误 Invalid or missing attributes found in the tag
  • 如何在displaytag中导出带有xlsx扩展名的excel文件

    We used 显示标签用于导出文件xls格式 但我想要它xlsx格式 有什么办法可以将excel文件转换为新格式吗 我将显示标签中的扩展名更改为xls 到 xlsx
  • 使用 jQuery 和 PHP 实现长轮询

    我想构建一个基于 JavaScript jQuery 将用于 AJAX 和 PHP 的聊天 我听说这样做的一个好方法是使用长轮询 我确实理解这个想法 但我不知道如何在服务器端实现它 无限循环听起来是个坏主意 您不想创建无限循环 但可以设置超
  • 可滚动 div 无法在 Android 模拟器、iPhone 模拟器中工作

    我正在使用phonegap 我想保留固定的页眉和页脚 并且我想在它们之间滚动内容 为此 我将 div 与 div width 249px height 299px background color Gray overflow y auto
  • 如何使用宏在 SAS 中获取当前月份名称和年份

    我正在 SAS 中触发一封邮件 该邮件应在邮件中保存当前月份和年份 如何创建宏变量 month year这样 month应显示十月 year应显示 2020 目前使用 let sysmonth sysfunc month sysdate d
  • SqlDataSourceEnumerator.Instance.GetDataSources() 找不到本地 SQL Server 2008 实例

    我使用以下代码列出所有远程和本地 SQL Server 实例 public static void LocateSqlInstances using DataTable sqlSources SqlDataSourceEnumerator
  • 如何使用新的 OpenSSL 库编译 PHP

    我正在尝试使用 OpenSSL 编译 PHP 只需配置即可与默认 OpenSSL 库 0 9 6 配合使用 with openssl usr 但是 我安装了一个新的 OpenSSL 库 1 0 0 我想用它来编译 PHP 这个图书馆位于 u
  • 如何仅通过这种回溯找到第一个解决方案

    我正在尝试编写一个数独求解器 它将仅返回第一个可能的解决方案 我设法用 void 方法打印所有可能的解决方案 但我不能在第一个发现时停止 我知道首选方法是切换到布尔方法并返回true上树 但我找不到正确的写法 我尝试的任何方式总是给出编译错
  • setTimeout 函数的第三个参数是什么?

    我正在阅读一些使用 Promise 对象的代码 有一个setTimeout函数有三个参数 我想知道第三个参数是做什么的 因为通常它只有两个参数 代码如下 function timeout ms return new Promise reso