当前位置: 首页 > 知识库问答 >
问题:

如何将封装在Promise中的值传递到非异步函数中?[副本]

宰父存
2023-03-14

在一个类方法中,我通过一个异步函数this.retrieveData()检索了一些数据。这个方法返回给我的数据,我打算把它传递给另一个叫做renderTemboard()的函数。

async getTemplateHtml() {
   const data = await this.retrieveData()
   const html = renderTemplate(`some html template`, {stuff: data}
   return html
}

然而,问题是this.retrieveData()实际上以Promise的形式返回一个Promises数组

我无法传递从此返回的数据。retrieveData()直接插入到renderTemplate()的第二个参数中,因为数据中的元素仍然包装在promise中。我无法更改renderTemplate()函数的第二个参数,因为它来自npm库。

我怎样才能以某种方式解决包裹在数据中的Promises中的值,以便我可以将其传递到renderTemboard()中,因为它的实际值从其Promise中解包?


共有1个答案

颛孙安康
2023-03-14

如果检索数据返回一个promise数组,它应该是:

const data = await Promise.all(this.retrieveData());

这将promise数组映射为值数组。

 类似资料:
  • 我正试图从两个异步函数向一个函数传递两个值,但我不确定如何继续。代码如下: 我知道问题是我在异步函数之外调用函数,所以它不接收数字,它给我一个NAN(不是数字),但我不知道如何正确传递这两个在不同函数中检索的参数,有没有可能将btcPriceInUSD和priceExchangeMXN合并在一起并从那里调用它? 提前道谢!

  • 我正在使用无法修改的同步第三个功能,例如: 生成一个新的线程来完成这项工作,并立即返回,当事情完成时,我的onDone函数将被调用。 我想写一个异步方法来包装,这样有人可以这样调用它: 在中,我调用来做真正的事情。但是我不知道如何编写。 有人能告诉我这是否可能,以及怎么做吗?谢谢。

  • 我试图理解promise、回调等在node.js中是如何工作的,特别是在访问函数之外的值的情况下。我花了一些时间在这里浏览答案如何从异步调用返回响应?在这里调用条纹API等待,但我尝试的每一个变化,我总是以'订阅'函数之外未定义结束。 谢啦

  • 问题内容: 这似乎是一个愚蠢的问题,但是我是这个话题的新手。我正在致力于关于节点js的承诺。我想将参数传递给Promise函数。但是我不知道。 而功能类似于 问题答案: 将Promise包裹在一个函数中,否则它将立即开始工作。另外,您可以将参数传递给函数: 然后,使用它: ES6: 用:

  • 问题内容: 假设您维护一个公开一个函数的库。您的用户调用它来获取实际数据: 数据被保存在文件中,因此您可以使用内置的Node.js来实现。很明显这两个和是同步的功能。有一天,您被告知将基础数据源切换到只能异步访问的仓库(例如MongoDB)。还被告知要避免惹恼您的用户,API不能更改为仅返回promise或要求回调参数。您如何满足这两个要求? 使用回调/承诺的异步功能是JavasSript和Nod

  • 我正在使用编写promise代码。然后现在,我决定使用wait/async编写它。我在promise中调用了一个函数add_,然后在中调用了另一个函数。然后是该函数的一部分。这是我使用的代码。然后 这是使用wait/async的代码。 使用await/async的代码显示了一个错误,即add\u lessons是意外标识符。那么,告诉我如何在promise中定义异步函数?