首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用Promise.all抛出Promise.all调用非对象?

调用Promise.all抛出Promise.all调用非对象?
EN

Stack Overflow用户
提问于 2018-01-23 10:45:56
回答 1查看 1.5K关注 0票数 6

我试图从承诺中返回承诺,然后像这样运行Promise.all

代码语言:javascript
复制
updateVideos()
.then(videos => {
     return videos.map(video => updateUrl({ id: video, url: "http://..." }))
})
.then(Promise.all) // throw Promise.all called on non-object

我如何使用这种Promise.all。我知道.then(promises => Promise.all(promises))很管用。但我只是想知道为什么失败了。

在Express res.json中也会发生这种情况。错误信息是不同的,但我认为原因是相同的。

例如:

代码语言:javascript
复制
promise().then(res.json) // Cannot read property 'app' of undefined

不起作用但

代码语言:javascript
复制
promise().then(results =>res.json(results))

确实如此。

EN

回答 1

Stack Overflow用户

发布于 2021-07-23 04:37:24

TJ Crowder的回答解释了为什么会发生这种情况。但是,如果您正在寻找不同的解决方案,BluebirdJS ( npm承诺库)对这种情况的处理就会有所不同。下面的代码对我来说很好。

使用蓝知更鸟也有助于处理需要执行和评估的承诺。mapSeries一直是我的救生者.

代码语言:javascript
复制
import * as Promise from "bluebird"

// ...

Promise.resolve()
  .then(() => arrayOfPromises)
  .then(Promise.all)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48399756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档