Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将嵌套的promises返回给另一个函数

将嵌套的promises返回给另一个函数
EN

Stack Overflow用户
提问于 2018-04-18 01:48:17
回答 1查看 47关注 0票数 1

我有一个NodeJS应用程序,我想我在从嵌套的Promise内部返回时遇到了问题。

如下所示,getToken函数正在工作。它调用另一个函数来检索密码。在此之后,它在进行GET调用时使用密码值。

然后,我们成功地获得了一个令牌,并将body打印到控制台。这是可行的。

但是,我现在面临的挑战是将我的令牌body的值传递给另一个方法以供以后使用。printBodyValue当前失败,失败时出现“undefined”错误。

如何将值从getToken内部传递到printBodyValue

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
getToken: function() {
   module.exports.readCredentialPassword()
 .then(result => {
     var request = require('request-promise');
     var passwd = result;
     var basicAuthData = "Basic " + (new Buffer("fooUser" + ":" + passwd).toString("base64"));
     var options = {
        method: "GET",
        uri: ("http://localhost:8001/service/verify"),
        followRedirects: true,
        headers: {
          "Authorization": basicAuthData
        }
     };
     return request(options)
       .then(function (body) {
         console.log("Token value is: ", body);
         return body;
       })
       .catch(function (err) {
         console.log("Oops! ", err);
       });
   });
}

printBodyValue: function() {
   module.exports.getToken().then(function(body) {
    console.log("Token value from printBodyValue is: \n", body);
   });
}
EN

回答 1

Stack Overflow用户

发布于 2018-04-18 01:52:16

getToken中,不使用嵌套的promise反模式,而是链接您的promise,并返回最终的promise,这样您就可以使用promise并使用它的解析值:

(另外,由于您使用的是ES6,因此优先使用const而不是var)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
getToken: function() {
  return module.exports.readCredentialPassword()
    .then(result => {
      const request = require('request-promise');
      const passwd = result;
      const basicAuthData = "Basic " + (new Buffer("fooUser" + ":" + passwd).toString("base64"));
      module.exports.log("Sending Request: ", jenkinsCrumbURL);
      const options = {
        method: "GET",
        uri: ("http://localhost:8001/service/verify"),
        followRedirects: true,
        headers: {
          "Authorization": basicAuthData
        }
      };
      return request(options);
    })
    .then(function(body) {
      console.log("Token value is: ", body);
      // the return value below
      // will be the final result of the resolution of
      // `module.exports.readCredentialPassword`, barring errors:
      return body;
    })
    .catch(function(err) {
      console.log("Oops! ", err);
    });
}

printBodyValue: function() {
  module.exports.getToken().then(function(body) {
    console.log("Token value from printBodyValue is: \n", body);
  });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49889916

复制
相关文章
安装libwxsmithlib-dev时提示“正试图覆盖...”的错误
正在解压缩 libwxsmithlib-dev (从 .../libwxsmithlib-dev_10.05-2_i386.deb) ... dpkg:处理 /var/cache/apt/archives/libwxsmithlib-dev_10.05-2_i386.deb (--unpack)时出错: 正试图覆盖 /usr/include/wxsmith/contrib/include/wx/propgrid/advprops.h,它同时被包含于软件包 wxsmith-headers 10.05-1 由于已经达到 MaxReports 限制,没有写入 apport 报告。
forrestlin
2022/04/02
9770
word在试图打开文件时遇到错误的解决办法
取消勾选第一个选项“为来自Internet的文件启用受保护的视图”,点击确定后退出,然后重新打开文件
全栈程序员站长
2022/09/01
2.6K0
word在试图打开文件时遇到错误的解决办法
word在试图打开文件时遇到错误,解决办法
取消勾选第一个选项“为来自Internet的文件启用受保护的视图”,点击确定后推出,然后重新打开文件
全栈程序员站长
2022/08/12
1.9K0
word在试图打开文件时遇到错误,解决办法
优雅的在终端中编写Python
專 欄 ❈PytLab,Python 中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Python,C,C++。熟悉数值算法(最优化方法,蒙特卡洛算法等)与并行化 算法(MPI,OpenMP等多线程以及多进程并行化)以及python优化方法,经常使用C++给python写扩展。 blog:http://ipytlab.com github:https://github.com/PytLab ❈ 前言 最早我也只是在服务器上编辑文件的时候用用vim来改改程序,并没有把vim当做自己的主力
Python中文社区
2018/01/31
1.7K0
优雅的在终端中编写Python
优雅的在终端中编写Python
最早我也只是在服务器上编辑文件的时候用用vim来改改程序,并没有把vim当做自己的主力编辑器。但是偶然的一次机会需要改一个奇葩的输入文件的格式,用了下Vim的宏录制,尝到了甜头,于是后面就开始用Vim来写程序了,虽然使用初期有些阻力,但时间久了就会发现,双手再也不用离开键盘,即使使用sublime这样的编辑器我也要改成使用Vim模式,Vim真的能让自己一思维的速度编辑文本(对我来说就是写程序了)。
用户1332428
2018/07/26
1.8K0
优雅的在终端中编写Python
Word 在试图打开文件时遇到错误 解决办法
从网上下了个word文档,发现打开时提示文件打开遇到错误,提示的解决办法都无效,发到其他电脑上发现又能正常打开,于是确定是本机word设置有问题
全栈程序员站长
2022/08/11
1.5K0
Word 在试图打开文件时遇到错误 解决办法
word在试图打开文件时遇到错误,检查稳定或驱动器文件权限
我看很多人也是这问题,这种方案就可以解决。但我的是根本就没有“解除锁定”这一选项。
全栈程序员站长
2022/08/25
1.8K0
word在试图打开文件时遇到错误,检查稳定或驱动器文件权限
遇到“word在试图打开文件时遇到错误”怎么办?
1.打开文件遇到的错误提示“word在试图打开文件时遇到错误” 2.关闭这个提示窗口,打开左上角的文件按钮。 3.点击最下面的选项按钮,进入选项对话框, 4.点击左侧的信任中心,然后选择右侧的信任中心设置。 5.进入信任中心点击左侧的受保护试图选项卡,默认是三个选项都被选中。 6.取消勾选第一个选项“为来自internet的文件启用受保护的试图”,点击确认后退出,然后重新打开文件,看看是不是有效果了!
全栈程序员站长
2022/06/30
5.8K0
word输入矩阵卡死,导致word在试图打开文件时遇到错误
问题: 今天用office word 2019输入一个矩阵的时候,突然卡死了。强制关闭了word。再打开就变成这样了。
全栈程序员站长
2022/08/31
1.2K0
quartus ii运行错误_安装quartus时弹出错误
Info: ******************************************************************* Info: Running Quartus II 64-Bit Analysis & Synthesis Info: Version 11.0 Build 157 04/27/2011 SJ Full Version Info: Processing started: Thu May 15 13:09:59 2014 Info: Command: quartus_map –read_settings_files=on –write_settings_files=off simulate -c simulate Info: Parallel compilation is enabled and will use 2 of the 2 processors detected Info: Found 1 design units, including 1 entities, in source file simulate.v Info: Found entity 1: modelsim_test Error: Top-level design entity “simulate” is undefined
全栈程序员站长
2022/11/04
5.1K0
quartus ii运行错误_安装quartus时弹出错误
解决在打开word时,出现 “word 在试图打开文件时遇到错误” 的问题(亲测有效)[通俗易懂]
最近在网上查找期刊论文的模板时,发现从期刊官网下载下来的论文格式模板,在本地用word打开时,出现错误,情况如下
全栈程序员站长
2022/09/03
4.2K0
解决在打开word时,出现 “word 在试图打开文件时遇到错误” 的问题(亲测有效)[通俗易懂]
“word在试图打开文件时遇到错误”解决办法,亲测可用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130921.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/11
1.5K0
“word在试图打开文件时遇到错误”解决办法,亲测可用
Word——Word在试图打开文件时遇到错误的一种解决办法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132248.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
1.2K0
Word——Word在试图打开文件时遇到错误的一种解决办法
word在试图打开文件时遇到错误,一种解决办法[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135545.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
1.7K0
word在试图打开文件时遇到错误,一种解决办法[通俗易懂]
关于首次运行Hadoop的Grep案例时出现的错误
重点关注这句“19/05/14 18:26:55 INFO metrics.MetricsUtil: Unable to obtain hostName java.net.UnknownHostException: hadoop101: hadoop101: Temporary failure in name resolution”,其为hostname可能存在问题,因此去查看/etc/sysconfig/network文件和/etc/hosts文件,发现其network文件中的“HOSTNAME=”后多打了一个空格,把其去掉,即可,问题解决
可定
2020/04/20
4.4K0
office xls 文件已损坏 无法打开 word在试图打开文件时遇到错误
转自:http://windyli.blog.51cto.com/1300305/326491
全栈程序员站长
2022/09/01
2.5K0
Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法
我使用的是 Office 2019 的 Word 打开后缀名为 doc 的文件。
wsuo
2021/03/18
8.4K0
Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法
word2007在试图打开文件时遇到错误解决方法「建议收藏」
当您尝试在 Microsoft Office Word 2007 中打开 .docx 文件时,该文件打不开。此外,您还会收到以下错误消息: Word 在试图打开文件时遇到错误。 请尝试下列方法: * 检查文档或驱动器的文件权限。 * 确保有足够的内存和磁盘空间。 * 用文本恢复转换器打开文件。
全栈程序员站长
2022/09/02
2.7K0
编写Docker Compose时要注意的五大常见错误
在构建容器化的应用时,开发人员往往需要某种方法来引导启动目标容器,以对其进行代码级别的测试。尽管业界有许多方法可以实现该目的,但Docker Compose是目前最受欢迎的一种方法。它能够让如下两个方面变得容易实现:
Java帮帮
2020/08/21
2.2K1
编写Docker Compose时要注意的五大常见错误
点击加载更多

相似问题

ASP.NET C#捕获类中的所有异常

50

在ASP.NET MVC + Web中捕获所有异常

11

MVC Winforms c#空引用异常

21

WinForms和Asp类库中的异常处理

40

捕获类中的所有异常

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文