【发布时间】:2021-05-01 04:24:11
【问题描述】:
假设,我们有一个承诺列表[p1,p2]。
我想创建一个以[p1,p2] 作为参数并返回最后一个已解决的承诺的函数,即在这种情况下,返回的承诺将是p2。
动机是我想在 Promise 对象上实现 last() 方法。
const p1 = new Promise((resolve,reject)=>{
setTimeout(()=>{resolve("P1 resolved in 3 seconds")},3000)
});
const p2 = new Promise((resolve,reject)=>{
setTimeout(()=>{resolve("P2 resolved in 5 seconds")},5000)
});
Promise.race([p2,p1]).then(value=>{ console.log(value) // Both promises resolved but P2 is slower
}) // Expected output : P1 resolved in 3 seconds
Promise.last([p2,p1]).then(value=>{ console.log(value) // Both promises resolved but P2 is slower
}) // Expected output : P2 resolved in 5 second.
【问题讨论】:
-
我的动机是在 Promise 对象上创建一个 last() 方法,该方法将返回最后解决的 Promise。例如 Promise.last([p2,p1]).then(value=>{ console.log(value) // 两个 Promise 都已解决,但 P2 较慢}) // 预期输出:“P2 在 5 秒内解决”跨度>
标签: javascript asynchronous async-await promise es6-promise