Promises,如何将变量传递到 .then 函数

2023-11-23

您好,这是一个帮助我理解 Promise 的问题.then返回工作。问题是:如何将变量的作用域限定为第二个 .then 链函数?

这是一个jsbinhttp://jsbin.com/xacuna/edit?js,输出

我可以访问全局变量,并将作用域变量传递给第一个 then,但不能传递给后面的变量。

  let innerReturnFunction = (res, myName) => {
    /* this works */
    console.log(`hi from inner name: ${myName}`)
    return res
  }

 let getInnerFuncVariable = () => {
   var myName = 'arturo'

   return fetch('https://httpbin.org/get')
    .then(function (res) {
      myName = 'Bob'
      return innerReturnFunction(res, myName);
    })
    .then(function (res, myName) {
      /* doesn't work, how can I access myName */
      console.log(`in first then ${res.url}, ${myName}`)
    });
 }

getInnerFuncVariable().then(function(res, myName) {
  /* how can I access myName */
  console.log(`last called ${myName}`)
})

当您使用 ES2015 时 - 简单的解决方案使用object 属性名称简写 and 对象解构

let innerReturnFunction = ({res, myName}) => {
    /* this works */
    console.log(`hi from inner name: ${myName}`);
    return {res, myName}; // return an object
}

let getInnerFuncVariable = () => {
    var myName = 'arturo';

    return fetch('https://httpbin.org/get')
        .then(function(res) {
            myName = 'Bob'
            return innerReturnFunction({res, myName});
        })
        .then(function({res, myName}) {
            console.log(`in first then ${res.url}, ${myName}`);
            return {res, myName};// ADD THIS!!
        });
}

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

Promises,如何将变量传递到 .then 函数 的相关文章

随机推荐

  • 保存可在任何网站上编辑的内容所做的更改

    以下代码允许任何网站暂时完全可编辑 document body contentEditable true 如果我想使用此方法保存对特定网站所做的设置 如何使用 Javascript 和 PHP 如果需要 实现此目的 以便下次访问此 URL
  • 如何更改 VS Code 中的装订线宽度?

    如何使排水沟宽度更大 我想要它是当前宽度的 4 5 倍 请参见下图 宽度是一个生成的动态值 直接在 VScode 中通过多次测量得出 看here了解那里发生了什么 改变这一点并非易事 您必须自己深入研究代码并做好可能产生不良影响的准备 有一
  • 如何制作 Android 应用程序的评论副本?

    有人要求我提供一些我编写的 Android 应用程序的评论副本 这很棒 但我不愿意将完整的应用程序提供给任何人 我想做一个限时版本 可以工作两周左右 然后就放弃了 做到这一点最简单的方法是什么 我自己还没有对此进行测试 但我认为理论上 如果
  • 是否存在遵循本福德定律的随机数分布?

    Python 有多种方法来生成不同分布的随机数 请参阅的文档random module 不幸的是 如果没有适当的数学背景 特别是考虑到所需的参数 它们就不太容易理解 我想知道这些方法是否能够产生服从分布的随机数本福德定律 以及什么参数值是合
  • 在 iPad 上使位于文本框上的图像可点击(为 iOS 创建 HTML5 搜索输入类型)

    我正在尝试模拟 HTML5input type search 使用 JavaScript 我的目标是做这样的事情 首先 我将说明为什么我不直接使用 HTML5 搜索输入类型 对于 iPad 上述输入类型显示圆角文本框 本机搜索输入框所需的所
  • 将绘图保存为封装后记 (.eps) 时,R 丢失信息

    Lyx 和 Latex 可以很好地处理 eps 图像 但是 当我从 Rstudio 导出带有平滑曲线的散点图时 点会丢失 而绘图仅包含曲线 我尝试过的两种保存方法是 在 Rstudio 中 从图像字段的下拉菜单中选择 导出 并另存为 eps
  • 如何在 bash 中转义反引号

    我很长时间以来都在试图逃避 bash 中的反引号 我尝试使用 进行转义 但它不起作用 bash 中是否可以逃避反引号 示例代码 I hello pdf var1 cat lt
  • 在 F# 中实现队列类型

    我正在尝试在 F 中实现一个队列 到目前为止 这就是我所拥有的 但我认为它的行为更像是一个堆栈 type a queue NL Que of a a queue let enque m function NL gt Que m NL Que
  • appsettings.json 中 IncludeScopes 的 JSON 验证失败

    我正在使用 ASP NET Core 2 1 为什么我得到Expression must be of type object for IncludeScopes in my appsettings json file 下面是显示警告所需的
  • window.orientation 在 iOS 和 Android 中返回不同的值

    我正在测试我的网络应用程序iPad Safari 浏览器 and 三星 Tab 2 默认浏览器 The window orientationchange在两个设备中返回不同的值 document ready function window
  • 在“docker exec”命令中执行“bash -c”

    Context 我正在尝试为我的日常使用编写一个快捷方式docker exec命令 由于某些原因 我正在尝试这样的问题 当我在容器内使用 bash 控制台时 我的输出有时会被破坏 历史记录混乱 行在我编写时相互覆盖 I read here您
  • 什么时候不应该关闭 php 文件?

    我遇到过一个教程 如果我可以添加的话 这是一个有信誉的教程 其中关闭 php 标签 gt 被省略了 这让我想起了之前的一个教程 作者说它实际上更好not关闭标签 但没有解释原因 我有点惊讶 我认为关闭标签是更好的做法 为什么最好不要关闭它
  • 如何访问类中的全局环境对象?

    我有一个类需要更新全局环境对象 我可以整天在结构之间传递该环境对象 但是如何允许类对象访问同一变量 import SwiftUI class Global ObservableObject Published var num 10 clas
  • AWS Athena (Presto)如何将映射转置为列

    AWS Athena 查询问题 我的行中有一个嵌套映射 我想将其中的键转置到列 我可以明确地命名这些列 例如items label a 但在这种情况下 键实际上是动态的 从这些行 id 1 items label a foo label b
  • 需要贵金属 API/Web 服务 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 是否有免费的网络服务 AP
  • JavaMail 按 ReceivedDate 搜索,不能精确到秒吗?

    在 IMAP 中 邮件编号基于邮件放入文件夹的时间 即文件夹中的第一封邮件为 1 第二封邮件为 2 等等 但是 此排序不考虑消息的接收日期 我担心的是早于文件夹中的消息号 1 的消息 即由用户手动移入文件夹的消息 而不是在系统接收到消息时
  • Matplotlib,添加多行文本。添加可以跟随曲线的文本

    我已将文本添加到绘图中 在每行中进行编码 然后调整它看起来不错 增加或减少宽度 或更改位置 但是 有没有办法让 Python 知道您想要文本的位置以及如何设置它 然后我可以添加文本 Python 将计算出详细信息 例如 看看下面的图片 在图
  • 在 Android 中的按钮上写入多行文本

    我想知道如何在按钮上编写多行文本
  • 如何在 Laravel 5.4.18 中使用特征?

    我需要一个示例来说明在何处准确创建文件 写入文件以及如何使用特征中声明的函数 我使用 Laravel 框架 5 4 18 我没有更改框架中的任何文件夹 所有内容都在其对应的位置 已经非常感谢了 我在我的目录中创建了一个 Traits 目录H
  • Promises,如何将变量传递到 .then 函数

    您好 这是一个帮助我理解 Promise 的问题 then返回工作 问题是 如何将变量的作用域限定为第二个 then 链函数 这是一个jsbinhttp jsbin com xacuna edit js 输出 我可以访问全局变量 并将作用域