如何将包装在 Promise 中的值传递给非异步函数? [复制]
Posted
技术标签:
【中文标题】如何将包装在 Promise 中的值传递给非异步函数? [复制]【英文标题】:How to pass values wrapped in Promise into non-async function? [duplicate] 【发布时间】:2018-10-31 18:17:01 【问题描述】:在类方法中,我通过异步函数this.retrieveData()
检索了一些数据。此方法返回我打算将其传递给另一个名为 renderTemplate()
的函数的数据。
async getTemplatehtml()
const data = await this.retrieveData()
const html = renderTemplate(`some html template`, stuff: data
return html
然而,问题在于this.retrieveData()
实际上以Promise<string>[]
的形式返回了一个Promise 数组,而renderTemplate()
的签名是renderTemplate(string, stuff: string[]
我不能将 this.retrieveData()
返回的 data
直接传递给 renderTemplate()
的第二个参数,因为 data 中的元素仍然包装在 Promise 中。我也无法更改 renderTemplate()
函数的第二个参数,因为它来自 npm 库。
我怎样才能以某种方式解析 data
中的 Promises 中包装的值,以便我可以将其传递给 renderTemplate()
作为其从 Promise 中解包的实际值?
【问题讨论】:
const data = await Promise.all(this.retrieveData())
是否符合您的意思?
【参考方案1】:
如果retrieveData
返回一个promise数组,它应该是:
const data = await Promise.all(this.retrieveData());
这会将一组承诺映射到一组值。
【讨论】:
只是好奇,如果retrieveData()
返回 Promiseawait this.retrieveData()
,正如您最初建议的那样。以上是关于如何将包装在 Promise 中的值传递给非异步函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章