【发布时间】:2017-12-19 19:44:26
【问题描述】:
promiseSettle 必须返回一个Promise,当input 中的所有promise 都已解决(即解决或拒绝)时,该Promise 会被履行。
实现值将是一个对象数组,每个对象都具有以下签名:
- @typedef {Object} 结算
- @property {boolean} isFulfilled - 承诺是否已解决
- @property {boolean} isRejected - 承诺是否被拒绝
- @property {*=} 值 - 用于解决承诺的值(如果有)
- @property {*=} 原因 - 拒绝承诺的原因(如果有)
- @param {Array.>} 输入 - Promises 数组
-
@return {承诺。>}
function promiseSettle(input) { let promiseArray = []; for (let i = 0; i < input.length; i++) { Promise.resolve(input[i]).then(output => { promiseArray.push(output); console.log(promiseArray); }, reason => { promiseArray.push(reason); }) } } // testing data var p1 = new Promise((resolve, reject) => { setTimeout(reject, 1, "first promise of 1 sec"); }); var p2 = new Promise((resolve, reject) => { setTimeout(resolve, 1, "second promise of 2 sec"); }) var p3 = new Promise((resolve, reject) => { setTimeout(resolve, 1, "rejected promise"); }) promiseSettle([p1, p2, p3])
有人可以帮忙吗?我不确定如何使用预期的参数返回承诺。
【问题讨论】:
-
你的代码没有意义。像这样:
for(let i =0;i{甚至不是有效代码。请清理干净。 -
这是你的意思吗? stackoverflow.com/q/31424561/125981
-
"settle" 听起来您可能还涉及其他未标记的内容?还是只是混搭的 sudo 代码?
-
@Intervalia:你能帮忙解决一下吗?我已经把它清理干净了。谢谢。