javascript - 如何按已解决的顺序对承诺进行排序而不关心参数中的顺序
问题描述
let P1 = new Promise((res, rej) => {
setTimeout(res("R1"), 2000);
});
let P2 = new Promise((res, rej) => {
setTimeout(res("R2"), 5000);
});
let P3 = new Promise((res, rej) => {
setTimeout(res("R3"), 1000);
});
我希望我的函数按如下顺序返回承诺:[“R3”,“R1”,“R2”]
function preserveOrder([P1, P2, P3]); // should return ["R3, "R1", "R2"]
function preserveOrder([P2, P3, P1]); // should return ["R3, "R1", "R2"]
我想不出最好的方法是什么?(因为 Promise.all() 会保留订单)
解决方案
您可能正在寻找
async function fulfillmentOrder(promises) {
const results = [];
await Promise.all(promises.map(promise =>
promise.then(value => {
results.push(value);
})
));
return results;
}
推荐阅读
- reactjs - React-Slick 在不应该时将内容包装在 div 中
- java - 使用 2 个日期之间的 cron 表达式获取所有未来日期
- javascript - 使用 Laravel API 在 Android 中创建登录表单,但我有一些错误
- php - 如何将 .txt 文件值插入数据库并移动到 php 中的文件夹
- javascript - 是否可以将 npm 依赖项从另一个包合并到当前包?
- html - 文本不在浮动的正确位置:左
- debugging - 如何在调试模式下卫生应用程序
- sql - 如何根据表中的现有行向表中插入值
- javascript - 将 HTTP/2 与 angularJS 一起使用
- python - 具有随机权重的神经网络不学习