【问题标题】:How to return value from .then in promise to parent function/scope in JavaScript [duplicate]如何在 JavaScript 中从 .then 向父函数/范围返回值 [重复]
【发布时间】:2021-01-31 01:52:06
【问题描述】:

好的,所以我正在尝试修改我正在处理的函数中的一段现有代码,以集成数据库调用以检查存储在那里的信息,而不是像库中当前默认的那样仅在本地(commando. js)。

问题是,数据库调用是通过带有 sequelize 的 Promise 处理的。我需要以某种方式将 .then() 的值返回到父函数/范围?我知道您可以使用 async/await 来做到这一点,但因为该函数是从库中扩展的类的一部分,所以它不能是异步函数。有没有办法将 .then() 的值返回到父作用域,或者这根本不可能?

我尝试使用回调,它们将值返回到父作用域,但函数在回调返回之前完成执行,所以我认为除非有办法等待回调回来?

这是我目前拥有的:

nonAsyncFunction(args){
    // Do stuff

    database.getData()
        .then((result)=>{
            // Do Stuff
            return value
        });
    
    return value // Need to somehow return value from .then() here?
}

如果您有任何问题或需要我提供任何信息,请随时告诉我,否则非常感谢您的帮助。

【问题讨论】:

    标签: javascript node.js promise es6-promise


    【解决方案1】:

    按照设计,这是不可能的。您无法同步等待Promise 的解析,因此您无法返回Promise 解析为的值。

    这是因为,例如,HTML 中的<script> 元素没有defer 属性阻止解析和呈现。如果有人在其中发出同步 HTTP 请求,那就太糟糕了。这就是不推荐使用主线程上的同步 XHR 的原因。

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2015-08-01
      相关资源
      最近更新 更多