小编dim*_*dim的帖子

javascript Promise Final 块中的异步操作

我正在实现一个返回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)

javascript es6-promise

8
推荐指数
1
解决办法
8014
查看次数

标签 统计

es6-promise ×1

javascript ×1