gpt4 book ai didi

javascript - 将一个 Promise 的返回值作为另一个 Promise 的参数传递

转载 作者:行者123 更新时间:2023-12-03 11:38:16 25 4
gpt4 key购买 nike

可能是一个非常简单的问题,但这里是:

我正在使用 Bluebird Promise,但我想将从一个 Promise 返回的值作为参数传递给另一个 Promise。我当前的代码是:

Promise.props
reports: @app.Reports.getReports()
years: @app.Years.getYears()
.then (promised) =>
console.log promised

但我确实希望能够使用 promised.years 作为 getReports 的第一个参数,因此它会类似于 reports: @app. Reports.getReports(promised.years)

我尝试过嵌套 Promise,但它爆炸了。我尝试从报告定义中获取年份 promise ,但它爆炸了。

有什么想法吗?

谢谢!

最佳答案

是的,嵌套是解决问题的方法 - 当然,不会爆炸:

@app.Years.getYears()
.then (years) =>
@app.Reports.getReports(years)
.then (reports) ->
console.log {years, reports}

您无法在 getReports 调用中访问 promised.years,因为它不在范围内 - 它是您传入的回调函数的参数 首先调用getReports之后。

另一种编写方法是单独构造 Promise,然后将它们与您使用的 Promise.props 连接在一起:

yearsPromise = @app.Years.getYears()
reportsPromise = yearsPromise.then(@app.Reports.getReports)
Promise.props
years: yearsPromise,
reports: reportsPromise
.then (promised) ->
console.log promised

(请注意,您 cannot refer to another property 在对象文字中)

关于javascript - 将一个 Promise 的返回值作为另一个 Promise 的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26385597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com