我想要这样的东西:
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
函数作为new
对象的Promise
实例,见下面的代码:
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);
也许这段代码有一些其他的错误,我不知道,因为我没有测试它,但毫无疑问你的错误就像我在上面的句子中说的那样。