>我想要这样的东西:
let promises = [];
for (let i = 0; i < some_length; i++) {
let output = '';
promises.push(some_func(i)
.then((result) => {
output = result;
})
.catch((error) => {
output = error.message;
})
.finally(() => {
console.log(output);
})
);
}
return Promise.all(promises);
但是我收到运行时错误.then(...).catch(...).finally is not a function
.
我该如何解决这个问题?
节点
10 终于增加了对它的支持。使用节点 10.7.0 进行测试。
Promise.resolve().finally(() => {
console.log("It finally works!")
})
它终于奏效了!
(顺便说一句,Chrome和Firefox也支持它。
实际上,我认为您的some-func
函数不是返回Promise
,返回JavaScript
Promise
es then
,catch
和finally
有意义,所以我认为您必须将some_func
函数声明为Promise
对象的new
实例,请参见以下代码:
let promises = [];
for (let i = 0; i < some_length; i++) {
let output = '';
let some_func = (i) => {
return new Promise(function(resolve, reject) {
setTimeout(resolve(`success: ${i}`), 100, 'foo');
});
}
promises.push(some_func(i)
.then((result) => {
output = result;
})
.catch((error) => {
output = error.message;
})
.finally(() => {
console.log(output);
})
);
}
return Promise.all(promises);
也许这段代码还有其他一些错误,我不知道,因为我没有测试它,但毫无疑问,你的错误就像我在上面的句子中所说的那样。