将参数从订阅块或错误块传递到 'finally' 块

pass argument from subscribe block or error block to 'finally' block

有没有办法在不使用此关键字的情况下将参数从订阅块或错误块传递到 'finally' 块。我下面的尝试不起作用

this.service.create()
    .pipe(first())
    .subscribe (
    (resp) => {
        let argumentToFinally = '';
        if (!!resp.taskInfo) {
            argumentToFinally = this.showError(resp.taskInfo);
        } else {
            close();
            // if else block, 'argumentToFinally' is still ''
        }
    },
    (error) => {
        this.isCallingApi = false;
        argumentToFinally = this.showError('create', undefined, error);
    },
    (argumentToFinally) => {
        close(argumentToFinally)
    });

close(argumentOfFinally?: any) {
    if (!!argumentOfFinally) {
        ..
    }
    this.closeWizard();
}
  • 您只能在 finally 块中使用全局变量 (this.variableName),因为 finally 块不接受任何参数。
  • finally块不会在error块之后调用,因为发生错误时订阅被取消。

查看更多信息 -> Using observables to pass values