javascript - 减少一个 Promise.all?
问题描述
我想多次调用我的api,然后只返回我的错误对象(这里是工人)
你怎么看这个实现?(我不喜欢,.then(()=> false
但即使使用reduce,我也没有找到更好的实现)
我想避免在 Promise.all 之后过滤
谢谢
updateWorkersStatusOnMissions: (workersOnMissions, apiService) => {
const updateWorkerStatusOnMissionPromises = workersOnMissions
.map(workerOnMission =>
apiService.put('missions', formatWorkerOnMission(workerOnMission))
.then(() => false)
.catch(() => formatWorkerInError(workerOnMission))
)
return Promise
.all(updateWorkerStatusOnMissionPromises)
.then(filter(Boolean))
},
解决方案
我通常做的是在结果周围引入某种“框”,以便告诉我从承诺中得到的结果的“种类”。一个promise总是会返回一个值给你,但是取决于它提供then(onSuccess, onFail)
的地方,类型是不同的。
const into = type => val => ({ type, val })
const arrayOfstuff = [];
const arrayOfPromises = arrayOfstuff.map(stuff => makePromise(stuff)
.then(into("success"), into("error")))
const successFullStruff = Promise.all(arrayOfPromises)
.then(filter(result => result.type === "success"))
const failedStuff = Promise.all(arrayOfPromises)
.then(filter(result => result.type === "error"))
推荐阅读
- cassandra - Cassandra 驱动程序未公开指标
- android - 添加适用于 Android 的 Apptentive 调查
- hikaricp - 使用 Hikari 池的主从数据库配置
- ionic-framework - 如何在视频播放器中流式传输本地字节数组 - Ionic 3
- c# - .NET Core 配置的环境变量与构建配置
- microsoft-graph-api - 如何获取 Drive 中项目的 TaxKeyword - Microsoft Graph
- html - 如何在 *ngIf HTML 中获取 .ts var 值?
- opengl - 如何在 qt3d 中将渲染设置组件添加到我的根实体?
- python - python索引不改变numpy数组
- c# - ASP.NET 核心 SPA SSR:使用 AntiForgery