【问题标题】:use value instead of console logging使用值而不是控制台日志记录
【发布时间】:2018-08-08 23:35:42
【问题描述】:
            amber.send(avatarimage).then(sent => { 
                let image = sent.attachments.first().url;

            });

基本上我正在尝试使用sent.attachments.first().url 而不是控制台记录它,我对此并不熟悉,并且执行amber.send(avatarimage).then(sent => let image = (sent.attachments.first().url)); 之类的操作当然不起作用,我如何获取值而不是记录它?

【问题讨论】:

  • 您好,欢迎来到 stackoverflow。 “获得价值”是什么意思。那个时候价值已经存在了。你可能只是对 Promises 和异步编程感到困惑。如果您能提供更多有用的上下文或代码,谢谢。
  • @AlenGenzić 基本上我想将sent.attachments.first().url 存储在一个变量中,但我现在知道在什么地方以及如何做到这一点
  • 视情况而定。如果你想使用sent.attachments.first().url,你必须在它存在的同一个范围内使用它,也就是在 then 回调中。
  • @AlenGenzić 我已经编辑了代码,现在我正在尝试在.then 之外使用image,我该怎么做?
  • 您能否将此解释添加到问题中?谢谢。您不能在 then 之外使用 image 变量,因为它在此范围之前或之后都不存在。在let image = sent.attachments.first().url; 之后,您必须立即对图像变量执行所有操作

标签: node.js promise


【解决方案1】:

由于您使用的是 Promise,请尝试 async/await。

amber.send(avatarimage).then(sent => { 
    let image = sent.attachments.first().url;
});

现在

const image = await amber.send(avatarimage);

我必须警告你,async/await 不能替代异步编程,因为它仍然是异步编程,上面撒了非常同步的语法糖。

或者您可以将代码放在image 所在的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 2017-03-26
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    相关资源
    最近更新 更多