如何在 NodeJS 的 'Promise' 子句中使用 'final'?



>我想要这样的东西:

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 thencatchfinally有意义,所以我认为您必须将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);

也许这段代码还有其他一些错误,我不知道,因为我没有测试它,但毫无疑问,你的错误就像我在上面的句子中所说的那样。

相关内容

  • 没有找到相关文章

最新更新