我正在实现一个返回Promise. 在其实现中,我调用另一个函数,它本身返回一个Promise,我需要对结果进行一些转换。
像这样的东西:
function myDoStuff(params) {
return actuallyDoStuff(params).then(
(result) => { return "myTransformation " + result; }
);
}
Run Code Online (Sandbox Code Playgroud)
现在,我还需要调用一些清理代码,无论成功还是失败。我可以finally在返回的 Promise 中添加一个子句,但问题是:我需要在 finally 子句中执行的操作也是异步的(基本上,另一个函数Promise再次返回 a ),并且我需要返回的 Promise 等待最终确定在它解决之前完成。
看来我无法在函数内返回承诺(至少, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promisefinally中似乎没有提及)/最后)。
then那么,我是否需要从and调用终结catch,链接承诺,或者是否有使用finally构造的方法?
actuallyDoStuff在这两种情况下调用终结并在丑陋的代码中保留结果的错误:
function myDoStuff(params) {
return actuallyDoStuff(params).then((result) => {
return doFinalization().then(() => {
return "myTransformation " + result;
});
}, (err) => {
return doFinalization().then(() => {
throw err;
}), () => …Run Code Online (Sandbox Code Playgroud)